Skip to content

Commit 8ae2274

Browse files
committed
Revert TO_CHAR changes
1 parent efbc5e2 commit 8ae2274

3 files changed

Lines changed: 3 additions & 91 deletions

File tree

sqlglot/dialects/postgres.py

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,48 +21,26 @@ class Postgres(Dialect):
2121
}
2222

2323
TIME_MAPPING = {
24-
"AM": "%p", # AM/PM meridiem indicator
25-
"A.M.": "%p", # AM/PM with periods
2624
"d": "%u", # 1-based day of week
2725
"D": "%u", # 1-based day of week
28-
"day": "%A", # full weekday name (lowercase)
29-
"Day": "%A", # full weekday name (capitalized)
30-
"DAY": "%A", # full weekday name (uppercase)
3126
"dd": "%d", # day of month
3227
"DD": "%d", # day of month
3328
"ddd": "%j", # zero padded day of year
3429
"DDD": "%j", # zero padded day of year
35-
"dy": "%a", # abbreviated weekday name (lowercase)
36-
"Dy": "%a", # abbreviated weekday name (capitalized)
37-
"DY": "%a", # abbreviated weekday name (uppercase)
3830
"FMDD": "%-d", # - is no leading zero for Python; same for FM in postgres
3931
"FMDDD": "%-j", # day of year
4032
"FMHH12": "%-I", # 9
4133
"FMHH24": "%-H", # 9
4234
"FMMI": "%-M", # Minute
4335
"FMMM": "%-m", # 1
4436
"FMSS": "%-S", # Second
45-
"hh": "%I", # 12-hour (HH defaults to 12-hour in PG)
46-
"HH": "%I", # 12-hour (HH defaults to 12-hour in PG)
4737
"HH12": "%I", # 09
4838
"HH24": "%H", # 09
4939
"mi": "%M", # zero padded minute
5040
"MI": "%M", # zero padded minute
5141
"mm": "%m", # 01
5242
"MM": "%m", # 01
53-
"mon": "%b", # abbreviated month name (lowercase)
54-
"Mon": "%b", # abbreviated month name (capitalized)
55-
"MON": "%b", # abbreviated month name (uppercase)
56-
"month": "%B", # full month name (lowercase)
57-
"Month": "%B", # full month name (capitalized)
58-
"MONTH": "%B", # full month name (uppercase)
5943
"OF": "%z", # utc offset
60-
"PM": "%p", # PG treats AM/PM as synonymous; both print actual meridiem
61-
"P.M.": "%p",
62-
"am": "%p",
63-
"a.m.": "%p",
64-
"pm": "%p",
65-
"p.m.": "%p",
6644
"ss": "%S", # zero padded second
6745
"SS": "%S", # zero padded second
6846
"TMDay": "%A", # TM is locale dependent
@@ -79,17 +57,6 @@ class Postgres(Dialect):
7957
"YYYY": "%Y", # 2015
8058
}
8159

82-
# Prefer bare forms (Mon, Day, Dy, Month) over TM-prefixed forms when
83-
# generating Postgres SQL from the internal strftime representation.
84-
INVERSE_TIME_MAPPING = {
85-
"%A": "Day",
86-
"%a": "Dy",
87-
"%b": "Mon",
88-
"%B": "Month",
89-
"%I": "HH12",
90-
"%p": "AM",
91-
}
92-
9360
class Tokenizer(tokens.Tokenizer):
9461
BIT_STRINGS = [("b'", "'"), ("B'", "'")]
9562
HEX_STRINGS = [("x'", "'"), ("X'", "'")]

tests/dialects/test_exasol.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ def test_datetime_functions(self):
464464
write={
465465
"exasol": "SELECT TO_CHAR(CAST('2024-07-08 13:45:00' AS TIMESTAMP), 'DY')",
466466
"oracle": "SELECT TO_CHAR(CAST('2024-07-08 13:45:00' AS TIMESTAMP), 'DY')",
467-
"postgres": "SELECT TO_CHAR(CAST('2024-07-08 13:45:00' AS TIMESTAMP), 'Dy')",
467+
"postgres": "SELECT TO_CHAR(CAST('2024-07-08 13:45:00' AS TIMESTAMP), 'TMDy')",
468468
"databricks": "SELECT DATE_FORMAT(CAST('2024-07-08 13:45:00' AS TIMESTAMP), 'EEE')",
469469
},
470470
)

tests/dialects/test_postgres.py

Lines changed: 2 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -152,12 +152,10 @@ def test_postgres(self):
152152
"SELECT TO_TIMESTAMP(1284352323.5), TO_TIMESTAMP('05 Dec 2000', 'DD Mon YYYY')"
153153
)
154154
self.validate_identity(
155-
"SELECT TO_TIMESTAMP('05 Dec 2000 10:00 AM', 'DD Mon YYYY HH:MI AM')",
156-
"SELECT TO_TIMESTAMP('05 Dec 2000 10:00 AM', 'DD Mon YYYY HH12:MI AM')",
155+
"SELECT TO_TIMESTAMP('05 Dec 2000 10:00 AM', 'DD Mon YYYY HH:MI AM')"
157156
)
158157
self.validate_identity(
159-
"SELECT TO_TIMESTAMP('05 Dec 2000 10:00 PM', 'DD Mon YYYY HH:MI PM')",
160-
"SELECT TO_TIMESTAMP('05 Dec 2000 10:00 PM', 'DD Mon YYYY HH12:MI AM')",
158+
"SELECT TO_TIMESTAMP('05 Dec 2000 10:00 PM', 'DD Mon YYYY HH:MI PM')"
161159
)
162160
self.validate_identity(
163161
"SELECT * FROM foo, LATERAL (SELECT * FROM bar WHERE bar.id = foo.bar_id) AS ss"
@@ -1022,59 +1020,6 @@ def test_postgres(self):
10221020
"redshift": "SELECT TO_CHAR(foo, bar)",
10231021
},
10241022
)
1025-
1026-
# TO_CHAR format token conversions: month names, weekday names, AM/PM, HH
1027-
self.validate_all(
1028-
"SELECT TO_CHAR(dt, 'Mon YYYY')",
1029-
write={
1030-
"clickhouse": "SELECT formatDateTime(dt, '%b %Y')",
1031-
"postgres": "SELECT TO_CHAR(dt, 'Mon YYYY')",
1032-
},
1033-
)
1034-
self.validate_all(
1035-
"SELECT TO_CHAR(dt, 'Month YYYY')",
1036-
write={
1037-
"clickhouse": "SELECT formatDateTime(dt, '%B %Y')",
1038-
"postgres": "SELECT TO_CHAR(dt, 'Month YYYY')",
1039-
},
1040-
)
1041-
self.validate_all(
1042-
"SELECT TO_CHAR(dt, 'Day')",
1043-
write={
1044-
"clickhouse": "SELECT formatDateTime(dt, '%A')",
1045-
"postgres": "SELECT TO_CHAR(dt, 'Day')",
1046-
},
1047-
)
1048-
self.validate_all(
1049-
"SELECT TO_CHAR(dt, 'Dy')",
1050-
write={
1051-
"clickhouse": "SELECT formatDateTime(dt, '%a')",
1052-
"postgres": "SELECT TO_CHAR(dt, 'Dy')",
1053-
},
1054-
)
1055-
self.validate_all(
1056-
"SELECT TO_CHAR(dt, 'HH12:MI AM')",
1057-
write={
1058-
"clickhouse": "SELECT formatDateTime(dt, '%I:%M %p')",
1059-
"postgres": "SELECT TO_CHAR(dt, 'HH12:MI AM')",
1060-
},
1061-
)
1062-
self.validate_all(
1063-
"SELECT TO_CHAR(dt, 'DD Mon YYYY HH24:MI')",
1064-
write={
1065-
"clickhouse": "SELECT formatDateTime(dt, '%d %b %Y %H:%M')",
1066-
"postgres": "SELECT TO_CHAR(dt, 'DD Mon YYYY HH24:MI')",
1067-
},
1068-
)
1069-
# Bare HH (no 12/24 suffix) defaults to 12-hour in PostgreSQL
1070-
self.validate_all(
1071-
"SELECT TO_CHAR(dt, 'HH:MI')",
1072-
write={
1073-
"clickhouse": "SELECT formatDateTime(dt, '%I:%M')",
1074-
"postgres": "SELECT TO_CHAR(dt, 'HH12:MI')",
1075-
},
1076-
)
1077-
10781023
self.validate_all(
10791024
"CREATE TABLE table1 (a INT, b INT, PRIMARY KEY (a))",
10801025
read={

0 commit comments

Comments
 (0)