Skip to content

Commit a14a3bd

Browse files
committed
bigquery: EXTRACT support For DAYOFWEEK, DAYOFYEAR, ISOWEEK, TIME
1 parent a453fdb commit a14a3bd

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

src/ast/value.rs

+8
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ pub enum DateTimeField {
114114
Month,
115115
Week,
116116
Day,
117+
DayOfWeek,
118+
DayOfYear,
117119
Date,
118120
Hour,
119121
Minute,
@@ -124,6 +126,7 @@ pub enum DateTimeField {
124126
Doy,
125127
Epoch,
126128
Isodow,
129+
IsoWeek,
127130
Isoyear,
128131
Julian,
129132
Microsecond,
@@ -135,6 +138,7 @@ pub enum DateTimeField {
135138
Nanosecond,
136139
Nanoseconds,
137140
Quarter,
141+
Time,
138142
Timezone,
139143
TimezoneHour,
140144
TimezoneMinute,
@@ -148,6 +152,8 @@ impl fmt::Display for DateTimeField {
148152
DateTimeField::Month => "MONTH",
149153
DateTimeField::Week => "WEEK",
150154
DateTimeField::Day => "DAY",
155+
DateTimeField::DayOfWeek => "DAYOFWEEK",
156+
DateTimeField::DayOfYear => "DAYOFYEAR",
151157
DateTimeField::Date => "DATE",
152158
DateTimeField::Hour => "HOUR",
153159
DateTimeField::Minute => "MINUTE",
@@ -159,6 +165,7 @@ impl fmt::Display for DateTimeField {
159165
DateTimeField::Epoch => "EPOCH",
160166
DateTimeField::Isodow => "ISODOW",
161167
DateTimeField::Isoyear => "ISOYEAR",
168+
DateTimeField::IsoWeek => "ISOWEEK",
162169
DateTimeField::Julian => "JULIAN",
163170
DateTimeField::Microsecond => "MICROSECOND",
164171
DateTimeField::Microseconds => "MICROSECONDS",
@@ -169,6 +176,7 @@ impl fmt::Display for DateTimeField {
169176
DateTimeField::Nanosecond => "NANOSECOND",
170177
DateTimeField::Nanoseconds => "NANOSECONDS",
171178
DateTimeField::Quarter => "QUARTER",
179+
DateTimeField::Time => "TIME",
172180
DateTimeField::Timezone => "TIMEZONE",
173181
DateTimeField::TimezoneHour => "TIMEZONE_HOUR",
174182
DateTimeField::TimezoneMinute => "TIMEZONE_MINUTE",

src/keywords.rs

+3
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ define_keywords!(
193193
DATE,
194194
DATETIME,
195195
DAY,
196+
DAYOFWEEK,
197+
DAYOFYEAR,
196198
DEALLOCATE,
197199
DEC,
198200
DECADE,
@@ -318,6 +320,7 @@ define_keywords!(
318320
IS,
319321
ISODOW,
320322
ISOLATION,
323+
ISOWEEK,
321324
ISOYEAR,
322325
JAR,
323326
JOIN,

src/parser.rs

+4
Original file line numberDiff line numberDiff line change
@@ -1416,6 +1416,8 @@ impl<'a> Parser<'a> {
14161416
Keyword::MONTH => Ok(DateTimeField::Month),
14171417
Keyword::WEEK => Ok(DateTimeField::Week),
14181418
Keyword::DAY => Ok(DateTimeField::Day),
1419+
Keyword::DAYOFWEEK => Ok(DateTimeField::DayOfWeek),
1420+
Keyword::DAYOFYEAR => Ok(DateTimeField::DayOfYear),
14191421
Keyword::DATE => Ok(DateTimeField::Date),
14201422
Keyword::HOUR => Ok(DateTimeField::Hour),
14211423
Keyword::MINUTE => Ok(DateTimeField::Minute),
@@ -1427,6 +1429,7 @@ impl<'a> Parser<'a> {
14271429
Keyword::EPOCH => Ok(DateTimeField::Epoch),
14281430
Keyword::ISODOW => Ok(DateTimeField::Isodow),
14291431
Keyword::ISOYEAR => Ok(DateTimeField::Isoyear),
1432+
Keyword::ISOWEEK => Ok(DateTimeField::IsoWeek),
14301433
Keyword::JULIAN => Ok(DateTimeField::Julian),
14311434
Keyword::MICROSECOND => Ok(DateTimeField::Microsecond),
14321435
Keyword::MICROSECONDS => Ok(DateTimeField::Microseconds),
@@ -1437,6 +1440,7 @@ impl<'a> Parser<'a> {
14371440
Keyword::NANOSECOND => Ok(DateTimeField::Nanosecond),
14381441
Keyword::NANOSECONDS => Ok(DateTimeField::Nanoseconds),
14391442
Keyword::QUARTER => Ok(DateTimeField::Quarter),
1443+
Keyword::TIME => Ok(DateTimeField::Time),
14401444
Keyword::TIMEZONE => Ok(DateTimeField::Timezone),
14411445
Keyword::TIMEZONE_HOUR => Ok(DateTimeField::TimezoneHour),
14421446
Keyword::TIMEZONE_MINUTE => Ok(DateTimeField::TimezoneMinute),

0 commit comments

Comments
 (0)