diff --git a/sqlglot/dialects/bigquery.py b/sqlglot/dialects/bigquery.py index ba61cd1649..0dc14cf4e8 100644 --- a/sqlglot/dialects/bigquery.py +++ b/sqlglot/dialects/bigquery.py @@ -310,11 +310,12 @@ def _build_levenshtein(args: t.List) -> exp.Levenshtein: def _build_format_time(expr_type: t.Type[exp.Expression]) -> t.Callable[[t.List], exp.TimeToStr]: def _builder(args: t.List) -> exp.TimeToStr: - return exp.TimeToStr( - this=expr_type(this=seq_get(args, 1)), - format=seq_get(args, 0), - zone=seq_get(args, 2), + # "bigquery")(expr_type(... -> "bigquery")([expr_type(...]) + formatted_time = build_formatted_time(exp.TimeToStr, "bigquery")( + [expr_type(this=seq_get(args, 1)), seq_get(args, 0)] ) + formatted_time.set("zone", seq_get(args, 2)) + return formatted_time return _builder @@ -369,6 +370,7 @@ class BigQuery(Dialect): # https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements#format_elements_date_time TIME_MAPPING = { + "%x": "%m/%d/%y", "%D": "%m/%d/%y", "%E6S": "%S.%f", "%e": "%-d", diff --git a/sqlglot/dialects/duckdb.py b/sqlglot/dialects/duckdb.py index fe93eab251..b7e1b00f22 100644 --- a/sqlglot/dialects/duckdb.py +++ b/sqlglot/dialects/duckdb.py @@ -423,6 +423,7 @@ class DuckDB(Dialect): **Dialect.DATE_PART_MAPPING, "DAYOFWEEKISO": "ISODOW", } + DATE_PART_MAPPING.pop("WEEKDAY") def to_json_path(self, path: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: diff --git a/tests/dialects/test_bigquery.py b/tests/dialects/test_bigquery.py index 08229ddb02..37976de3af 100644 --- a/tests/dialects/test_bigquery.py +++ b/tests/dialects/test_bigquery.py @@ -2897,8 +2897,8 @@ def test_format_temporal(self): self.validate_all( "SELECT FORMAT_DATETIME('%x', '2023-12-25 15:30:00')", write={ - "bigquery": "SELECT FORMAT_DATETIME('%x', '2023-12-25 15:30:00')", - "duckdb": "SELECT STRFTIME(CAST('2023-12-25 15:30:00' AS TIMESTAMP), '%x')", + "bigquery": "SELECT FORMAT_DATETIME('%D', '2023-12-25 15:30:00')", + "duckdb": "SELECT STRFTIME(CAST('2023-12-25 15:30:00' AS TIMESTAMP), '%m/%d/%y')", }, ) self.validate_all(