Add "timezone_region" and "timezone_abbr" support for EXTRACT (and DATE_PART) (#1090)

This commit is contained in:
Alexander Beedie 2024-01-16 17:46:10 +04:00 committed by GitHub
parent 5d66dc5dc9
commit 3ec337ec5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 0 deletions

View file

@ -143,8 +143,10 @@ pub enum DateTimeField {
Quarter,
Time,
Timezone,
TimezoneAbbr,
TimezoneHour,
TimezoneMinute,
TimezoneRegion,
NoDateTime,
}
@ -181,8 +183,10 @@ impl fmt::Display for DateTimeField {
DateTimeField::Quarter => "QUARTER",
DateTimeField::Time => "TIME",
DateTimeField::Timezone => "TIMEZONE",
DateTimeField::TimezoneAbbr => "TIMEZONE_ABBR",
DateTimeField::TimezoneHour => "TIMEZONE_HOUR",
DateTimeField::TimezoneMinute => "TIMEZONE_MINUTE",
DateTimeField::TimezoneRegion => "TIMEZONE_REGION",
DateTimeField::NoDateTime => "NODATETIME",
})
}

View file

@ -654,8 +654,10 @@ define_keywords!(
TIMESTAMPTZ,
TIMETZ,
TIMEZONE,
TIMEZONE_ABBR,
TIMEZONE_HOUR,
TIMEZONE_MINUTE,
TIMEZONE_REGION,
TINYINT,
TO,
TOP,

View file

@ -1800,8 +1800,10 @@ impl<'a> Parser<'a> {
Keyword::QUARTER => Ok(DateTimeField::Quarter),
Keyword::TIME => Ok(DateTimeField::Time),
Keyword::TIMEZONE => Ok(DateTimeField::Timezone),
Keyword::TIMEZONE_ABBR => Ok(DateTimeField::TimezoneAbbr),
Keyword::TIMEZONE_HOUR => Ok(DateTimeField::TimezoneHour),
Keyword::TIMEZONE_MINUTE => Ok(DateTimeField::TimezoneMinute),
Keyword::TIMEZONE_REGION => Ok(DateTimeField::TimezoneRegion),
_ => self.expected("date/time field", next_token),
},
_ => self.expected("date/time field", next_token),

View file

@ -2249,8 +2249,10 @@ fn parse_extract() {
verified_stmt("SELECT EXTRACT(MILLISECONDS FROM d)");
verified_stmt("SELECT EXTRACT(QUARTER FROM d)");
verified_stmt("SELECT EXTRACT(TIMEZONE FROM d)");
verified_stmt("SELECT EXTRACT(TIMEZONE_ABBR FROM d)");
verified_stmt("SELECT EXTRACT(TIMEZONE_HOUR FROM d)");
verified_stmt("SELECT EXTRACT(TIMEZONE_MINUTE FROM d)");
verified_stmt("SELECT EXTRACT(TIMEZONE_REGION FROM d)");
verified_stmt("SELECT EXTRACT(TIME FROM d)");
let res = parse_sql_statements("SELECT EXTRACT(JIFFY FROM d)");