Skip to content

Commit d19d955

Browse files
authored
Support DATETIME keyword (#512)
1 parent aa46e93 commit d19d955

File tree

4 files changed

+18
-0
lines changed

4 files changed

+18
-0
lines changed

src/ast/data_type.rs

+3
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ pub enum DataType {
7171
Date,
7272
/// Time
7373
Time,
74+
/// Datetime
75+
Datetime,
7476
/// Timestamp
7577
Timestamp,
7678
/// Interval
@@ -143,6 +145,7 @@ impl fmt::Display for DataType {
143145
DataType::Boolean => write!(f, "BOOLEAN"),
144146
DataType::Date => write!(f, "DATE"),
145147
DataType::Time => write!(f, "TIME"),
148+
DataType::Datetime => write!(f, "DATETIME"),
146149
DataType::Timestamp => write!(f, "TIMESTAMP"),
147150
DataType::Interval => write!(f, "INTERVAL"),
148151
DataType::Regclass => write!(f, "REGCLASS"),

src/keywords.rs

+1
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ define_keywords!(
169169
DATA,
170170
DATABASE,
171171
DATE,
172+
DATETIME,
172173
DAY,
173174
DEALLOCATE,
174175
DEC,

src/parser.rs

+1
Original file line numberDiff line numberDiff line change
@@ -2733,6 +2733,7 @@ impl<'a> Parser<'a> {
27332733
}
27342734
Keyword::UUID => Ok(DataType::Uuid),
27352735
Keyword::DATE => Ok(DataType::Date),
2736+
Keyword::DATETIME => Ok(DataType::Datetime),
27362737
Keyword::TIMESTAMP => {
27372738
// TBD: we throw away "with/without timezone" information
27382739
if self.parse_keyword(Keyword::WITH) || self.parse_keyword(Keyword::WITHOUT) {

tests/sqlparser_common.rs

+13
Original file line numberDiff line numberDiff line change
@@ -2615,6 +2615,19 @@ fn parse_literal_time() {
26152615
);
26162616
}
26172617

2618+
#[test]
2619+
fn parse_literal_datetime() {
2620+
let sql = "SELECT DATETIME '1999-01-01 01:23:34.45'";
2621+
let select = verified_only_select(sql);
2622+
assert_eq!(
2623+
&Expr::TypedString {
2624+
data_type: DataType::Datetime,
2625+
value: "1999-01-01 01:23:34.45".into()
2626+
},
2627+
expr_from_projection(only(&select.projection)),
2628+
);
2629+
}
2630+
26182631
#[test]
26192632
fn parse_literal_timestamp() {
26202633
let sql = "SELECT TIMESTAMP '1999-01-01 01:23:34'";

0 commit comments

Comments
 (0)