From 2e0eee6037c8afb31e5ed1ea7023f4f867f9a29e Mon Sep 17 00:00:00 2001 From: tobymao Date: Fri, 28 Apr 2023 23:24:33 -0700 Subject: [PATCH] Fix: postgres date_part type closes #1506 --- sqlglot/dialects/postgres.py | 2 +- tests/dialects/test_postgres.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/sqlglot/dialects/postgres.py b/sqlglot/dialects/postgres.py index e9bf1bdd22..1fcc83bc59 100644 --- a/sqlglot/dialects/postgres.py +++ b/sqlglot/dialects/postgres.py @@ -285,7 +285,7 @@ class Parser(parser.Parser): } def _parse_date_part(self) -> exp.Expression: - part = self._parse_var_or_string() + part = self._parse_type() self._match(TokenType.COMMA) value = self._parse_bitwise() diff --git a/tests/dialects/test_postgres.py b/tests/dialects/test_postgres.py index 4e0627fde4..13b3a9d790 100644 --- a/tests/dialects/test_postgres.py +++ b/tests/dialects/test_postgres.py @@ -122,6 +122,12 @@ def test_postgres(self): self.validate_identity("x ~ 'y'") self.validate_identity("x ~* 'y'") + self.validate_all( + "SELECT DATE_PART('isodow'::varchar(6), current_date)", + write={ + "postgres": "SELECT EXTRACT(CAST('isodow' AS VARCHAR(6)) FROM CURRENT_DATE)", + }, + ) self.validate_all( "SELECT DATE_PART('minute', timestamp '2023-01-04 04:05:06.789')", write={