diff --git a/sqlglot/expressions.py b/sqlglot/expressions.py index 8b0e722e6d..f557b4fa34 100644 --- a/sqlglot/expressions.py +++ b/sqlglot/expressions.py @@ -6493,7 +6493,7 @@ class TimeTrunc(Func, TimeUnit): class DateFromParts(Func): _sql_names = ["DATE_FROM_PARTS", "DATEFROMPARTS"] - arg_types = {"year": True, "month": True, "day": True} + arg_types = {"year": True, "month": False, "day": False} class TimeFromParts(Func): diff --git a/tests/dialects/test_duckdb.py b/tests/dialects/test_duckdb.py index d52d48c460..90825fd219 100644 --- a/tests/dialects/test_duckdb.py +++ b/tests/dialects/test_duckdb.py @@ -1240,6 +1240,9 @@ def test_duckdb(self): ) self.validate_identity("SELECT GREATEST(1.0, 2.5, NULL, 3.7)") + # TODO: This is incorrect AST, DATE_PART creates a STRUCT of values but it's stored in 'year' arg + self.validate_identity("SELECT MAKE_DATE(DATE_PART(['year', 'month', 'day'], TODAY()))") + def test_array_index(self): with self.assertLogs(helper_logger) as cm: self.validate_all(