Skip to content

Commit 3ec337e

Browse files
Add "timezone_region" and "timezone_abbr" support for EXTRACT (and DATE_PART) (#1090)
1 parent 5d66dc5 commit 3ec337e

File tree

4 files changed

+10
-0
lines changed

4 files changed

+10
-0
lines changed

src/ast/value.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,10 @@ pub enum DateTimeField {
143143
Quarter,
144144
Time,
145145
Timezone,
146+
TimezoneAbbr,
146147
TimezoneHour,
147148
TimezoneMinute,
149+
TimezoneRegion,
148150
NoDateTime,
149151
}
150152

@@ -181,8 +183,10 @@ impl fmt::Display for DateTimeField {
181183
DateTimeField::Quarter => "QUARTER",
182184
DateTimeField::Time => "TIME",
183185
DateTimeField::Timezone => "TIMEZONE",
186+
DateTimeField::TimezoneAbbr => "TIMEZONE_ABBR",
184187
DateTimeField::TimezoneHour => "TIMEZONE_HOUR",
185188
DateTimeField::TimezoneMinute => "TIMEZONE_MINUTE",
189+
DateTimeField::TimezoneRegion => "TIMEZONE_REGION",
186190
DateTimeField::NoDateTime => "NODATETIME",
187191
})
188192
}

src/keywords.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,8 +654,10 @@ define_keywords!(
654654
TIMESTAMPTZ,
655655
TIMETZ,
656656
TIMEZONE,
657+
TIMEZONE_ABBR,
657658
TIMEZONE_HOUR,
658659
TIMEZONE_MINUTE,
660+
TIMEZONE_REGION,
659661
TINYINT,
660662
TO,
661663
TOP,

src/parser/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1800,8 +1800,10 @@ impl<'a> Parser<'a> {
18001800
Keyword::QUARTER => Ok(DateTimeField::Quarter),
18011801
Keyword::TIME => Ok(DateTimeField::Time),
18021802
Keyword::TIMEZONE => Ok(DateTimeField::Timezone),
1803+
Keyword::TIMEZONE_ABBR => Ok(DateTimeField::TimezoneAbbr),
18031804
Keyword::TIMEZONE_HOUR => Ok(DateTimeField::TimezoneHour),
18041805
Keyword::TIMEZONE_MINUTE => Ok(DateTimeField::TimezoneMinute),
1806+
Keyword::TIMEZONE_REGION => Ok(DateTimeField::TimezoneRegion),
18051807
_ => self.expected("date/time field", next_token),
18061808
},
18071809
_ => self.expected("date/time field", next_token),

tests/sqlparser_common.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2249,8 +2249,10 @@ fn parse_extract() {
22492249
verified_stmt("SELECT EXTRACT(MILLISECONDS FROM d)");
22502250
verified_stmt("SELECT EXTRACT(QUARTER FROM d)");
22512251
verified_stmt("SELECT EXTRACT(TIMEZONE FROM d)");
2252+
verified_stmt("SELECT EXTRACT(TIMEZONE_ABBR FROM d)");
22522253
verified_stmt("SELECT EXTRACT(TIMEZONE_HOUR FROM d)");
22532254
verified_stmt("SELECT EXTRACT(TIMEZONE_MINUTE FROM d)");
2255+
verified_stmt("SELECT EXTRACT(TIMEZONE_REGION FROM d)");
22542256
verified_stmt("SELECT EXTRACT(TIME FROM d)");
22552257

22562258
let res = parse_sql_statements("SELECT EXTRACT(JIFFY FROM d)");

0 commit comments

Comments
 (0)