extract operator: add support for week keywords (#436)

This commit is contained in:
Yang Jiang 2022-03-13 03:17:56 +08:00 committed by GitHub
parent 481551c075
commit c688bbb4de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 6 additions and 0 deletions

View file

@ -123,6 +123,7 @@ impl fmt::Display for Value {
pub enum DateTimeField {
Year,
Month,
Week,
Day,
Hour,
Minute,
@ -149,6 +150,7 @@ impl fmt::Display for DateTimeField {
f.write_str(match self {
DateTimeField::Year => "YEAR",
DateTimeField::Month => "MONTH",
DateTimeField::Week => "WEEK",
DateTimeField::Day => "DAY",
DateTimeField::Hour => "HOUR",
DateTimeField::Minute => "MINUTE",

View file

@ -518,6 +518,7 @@ define_keywords!(
VERSIONING,
VIEW,
VIRTUAL,
WEEK,
WHEN,
WHENEVER,
WHERE,

View file

@ -909,6 +909,7 @@ impl<'a> Parser<'a> {
Token::Word(w) => match w.keyword {
Keyword::YEAR => Ok(DateTimeField::Year),
Keyword::MONTH => Ok(DateTimeField::Month),
Keyword::WEEK => Ok(DateTimeField::Week),
Keyword::DAY => Ok(DateTimeField::Day),
Keyword::HOUR => Ok(DateTimeField::Hour),
Keyword::MINUTE => Ok(DateTimeField::Minute),
@ -966,6 +967,7 @@ impl<'a> Parser<'a> {
if [
Keyword::YEAR,
Keyword::MONTH,
Keyword::WEEK,
Keyword::DAY,
Keyword::HOUR,
Keyword::MINUTE,

View file

@ -1384,6 +1384,7 @@ fn parse_extract() {
one_statement_parses_to("SELECT EXTRACT(year from d)", "SELECT EXTRACT(YEAR FROM d)");
verified_stmt("SELECT EXTRACT(MONTH FROM d)");
verified_stmt("SELECT EXTRACT(WEEK FROM d)");
verified_stmt("SELECT EXTRACT(DAY FROM d)");
verified_stmt("SELECT EXTRACT(HOUR FROM d)");
verified_stmt("SELECT EXTRACT(MINUTE FROM d)");