From 9caac526e1496a2f4f6aa2773215a5b030ade6fe Mon Sep 17 00:00:00 2001 From: Alex Qyoun-ae <4062971+MazterQyou@users.noreply.github.com> Date: Wed, 24 Aug 2022 20:15:53 +0400 Subject: [PATCH] feat: Support `LOCALTIME` and `LOCALTIMESTAMP` time functions --- src/parser.rs | 6 +++++- tests/sqlparser_common.rs | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/parser.rs b/src/parser.rs index 4cfbdd23b..ce8ac1acc 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -438,7 +438,11 @@ impl<'a> Parser<'a> { special: true, })) } - Keyword::CURRENT_TIMESTAMP | Keyword::CURRENT_TIME | Keyword::CURRENT_DATE => { + Keyword::CURRENT_TIMESTAMP + | Keyword::CURRENT_TIME + | Keyword::CURRENT_DATE + | Keyword::LOCALTIME + | Keyword::LOCALTIMESTAMP => { self.parse_time_functions(ObjectName(vec![w.to_ident()])) } Keyword::CASE => self.parse_case_expr(), diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index 65d699b3f..8b20eb967 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -5298,6 +5298,38 @@ fn parse_time_functions() { // Validating Parenthesis one_statement_parses_to("SELECT CURRENT_DATE", sql); + + let sql = "SELECT LOCALTIME()"; + let select = verified_only_select(sql); + assert_eq!( + &Expr::Function(Function { + name: ObjectName(vec![Ident::new("LOCALTIME")]), + args: vec![], + over: None, + distinct: false, + special: false, + }), + expr_from_projection(&select.projection[0]) + ); + + // Validating Parenthesis + one_statement_parses_to("SELECT LOCALTIME", sql); + + let sql = "SELECT LOCALTIMESTAMP()"; + let select = verified_only_select(sql); + assert_eq!( + &Expr::Function(Function { + name: ObjectName(vec![Ident::new("LOCALTIMESTAMP")]), + args: vec![], + over: None, + distinct: false, + special: false, + }), + expr_from_projection(&select.projection[0]) + ); + + // Validating Parenthesis + one_statement_parses_to("SELECT LOCALTIMESTAMP", sql); } #[test]