Skip to content

Commit 19fca87

Browse files
committed
bigquery: EXTRACT support For DAYOFWEEK, DAYOFYEAR, ISOWEEK, TIME
1 parent 35733cc commit 19fca87

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
@@ -117,6 +117,8 @@ pub enum DateTimeField {
117117
Month,
118118
Week,
119119
Day,
120+
DayOfWeek,
121+
DayOfYear,
120122
Date,
121123
Hour,
122124
Minute,
@@ -127,6 +129,7 @@ pub enum DateTimeField {
127129
Doy,
128130
Epoch,
129131
Isodow,
132+
IsoWeek,
130133
Isoyear,
131134
Julian,
132135
Microsecond,
@@ -138,6 +141,7 @@ pub enum DateTimeField {
138141
Nanosecond,
139142
Nanoseconds,
140143
Quarter,
144+
Time,
141145
Timezone,
142146
TimezoneHour,
143147
TimezoneMinute,
@@ -151,6 +155,8 @@ impl fmt::Display for DateTimeField {
151155
DateTimeField::Month => "MONTH",
152156
DateTimeField::Week => "WEEK",
153157
DateTimeField::Day => "DAY",
158+
DateTimeField::DayOfWeek => "DAYOFWEEK",
159+
DateTimeField::DayOfYear => "DAYOFYEAR",
154160
DateTimeField::Date => "DATE",
155161
DateTimeField::Hour => "HOUR",
156162
DateTimeField::Minute => "MINUTE",
@@ -162,6 +168,7 @@ impl fmt::Display for DateTimeField {
162168
DateTimeField::Epoch => "EPOCH",
163169
DateTimeField::Isodow => "ISODOW",
164170
DateTimeField::Isoyear => "ISOYEAR",
171+
DateTimeField::IsoWeek => "ISOWEEK",
165172
DateTimeField::Julian => "JULIAN",
166173
DateTimeField::Microsecond => "MICROSECOND",
167174
DateTimeField::Microseconds => "MICROSECONDS",
@@ -172,6 +179,7 @@ impl fmt::Display for DateTimeField {
172179
DateTimeField::Nanosecond => "NANOSECOND",
173180
DateTimeField::Nanoseconds => "NANOSECONDS",
174181
DateTimeField::Quarter => "QUARTER",
182+
DateTimeField::Time => "TIME",
175183
DateTimeField::Timezone => "TIMEZONE",
176184
DateTimeField::TimezoneHour => "TIMEZONE_HOUR",
177185
DateTimeField::TimezoneMinute => "TIMEZONE_MINUTE",

src/keywords.rs

+3
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ define_keywords!(
196196
DATE,
197197
DATETIME,
198198
DAY,
199+
DAYOFWEEK,
200+
DAYOFYEAR,
199201
DEALLOCATE,
200202
DEC,
201203
DECADE,
@@ -334,6 +336,7 @@ define_keywords!(
334336
IS,
335337
ISODOW,
336338
ISOLATION,
339+
ISOWEEK,
337340
ISOYEAR,
338341
JAR,
339342
JOIN,

src/parser/mod.rs

+4
Original file line numberDiff line numberDiff line change
@@ -1503,6 +1503,8 @@ impl<'a> Parser<'a> {
15031503
Keyword::MONTH => Ok(DateTimeField::Month),
15041504
Keyword::WEEK => Ok(DateTimeField::Week),
15051505
Keyword::DAY => Ok(DateTimeField::Day),
1506+
Keyword::DAYOFWEEK => Ok(DateTimeField::DayOfWeek),
1507+
Keyword::DAYOFYEAR => Ok(DateTimeField::DayOfYear),
15061508
Keyword::DATE => Ok(DateTimeField::Date),
15071509
Keyword::HOUR => Ok(DateTimeField::Hour),
15081510
Keyword::MINUTE => Ok(DateTimeField::Minute),
@@ -1514,6 +1516,7 @@ impl<'a> Parser<'a> {
15141516
Keyword::EPOCH => Ok(DateTimeField::Epoch),
15151517
Keyword::ISODOW => Ok(DateTimeField::Isodow),
15161518
Keyword::ISOYEAR => Ok(DateTimeField::Isoyear),
1519+
Keyword::ISOWEEK => Ok(DateTimeField::IsoWeek),
15171520
Keyword::JULIAN => Ok(DateTimeField::Julian),
15181521
Keyword::MICROSECOND => Ok(DateTimeField::Microsecond),
15191522
Keyword::MICROSECONDS => Ok(DateTimeField::Microseconds),
@@ -1524,6 +1527,7 @@ impl<'a> Parser<'a> {
15241527
Keyword::NANOSECOND => Ok(DateTimeField::Nanosecond),
15251528
Keyword::NANOSECONDS => Ok(DateTimeField::Nanoseconds),
15261529
Keyword::QUARTER => Ok(DateTimeField::Quarter),
1530+
Keyword::TIME => Ok(DateTimeField::Time),
15271531
Keyword::TIMEZONE => Ok(DateTimeField::Timezone),
15281532
Keyword::TIMEZONE_HOUR => Ok(DateTimeField::TimezoneHour),
15291533
Keyword::TIMEZONE_MINUTE => Ok(DateTimeField::TimezoneMinute),

0 commit comments

Comments
 (0)