diff --git a/sqlglot/dialects/oracle.py b/sqlglot/dialects/oracle.py index b491504746..2ea5cdbecd 100644 --- a/sqlglot/dialects/oracle.py +++ b/sqlglot/dialects/oracle.py @@ -37,6 +37,7 @@ class Oracle(Dialect): "HH12": "%I", # alias for HH "HH24": "%H", # Hour of day (0-23) "IW": "%V", # Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard + "IYYY": "%G", # 4-digit year of the ISO 8601 week-numbering calendar "MI": "%M", # Minute (0-59) "MM": "%m", # Month (01-12; January = 01) "MON": "%b", # Abbreviated name of month diff --git a/tests/dialects/test_oracle.py b/tests/dialects/test_oracle.py index 465d389a1e..6e7d55a7eb 100644 --- a/tests/dialects/test_oracle.py +++ b/tests/dialects/test_oracle.py @@ -516,6 +516,18 @@ def test_oracle(self): "postgres": "CAST('2022-01-01' AS DATE)", }, ) + self.validate_all( + "SELECT TO_CHAR(x, 'IYYY-IW')", + read={ + "duckdb": "SELECT STRFTIME(x, '%G-%V')", + }, + ) + self.validate_all( + "SELECT TO_CHAR(CAST(x AS DATE), 'IYYY-IW')", + read={ + "bigquery": "SELECT FORMAT_DATE('%G-%V', x)", + }, + ) self.validate_all( "x::binary_double",