From 43c988a8634b29a7ea2a9162f511d7c24bcded27 Mon Sep 17 00:00:00 2001 From: caton-hpg <87342612+caton-hpg@users.noreply.github.com> Date: Tue, 16 Aug 2022 10:06:16 +0800 Subject: [PATCH] fix datetime format --- src/common/time/parser/datetime_parser.yy | 25 +-------- .../time/parser/test/DateTimeParserTest.cpp | 54 ++++++++----------- 2 files changed, 24 insertions(+), 55 deletions(-) diff --git a/src/common/time/parser/datetime_parser.yy b/src/common/time/parser/datetime_parser.yy index 5d19a1a4e33..01fff802bc7 100644 --- a/src/common/time/parser/datetime_parser.yy +++ b/src/common/time/parser/datetime_parser.yy @@ -108,22 +108,6 @@ date throw DatetimeParser::syntax_error(@1, result.toString()); } } - | INTEGER NEGATIVE INTEGER { - $$ = new nebula::Date($1, $3, 1); - auto result = nebula::time::TimeUtils::validateDate(*$$); - if (!result.ok()) { - delete $$; - throw DatetimeParser::syntax_error(@1, result.toString()); - } - } - | INTEGER { - $$ = new nebula::Date($1, 1, 1); - auto result = nebula::time::TimeUtils::validateDate(*$$); - if (!result.ok()) { - delete $$; - throw DatetimeParser::syntax_error(@1, result.toString()); - } - } ; time @@ -153,14 +137,6 @@ time throw DatetimeParser::syntax_error(@1, result.toString()); } } - | INTEGER { - $$ = new nebula::Time($1, 0, 0, 0); - auto result = nebula::time::TimeUtils::validateTime(*$$); - if (!result.ok()) { - delete $$; - throw DatetimeParser::syntax_error(@1, result.toString()); - } - } ; opt_time_zone @@ -258,3 +234,4 @@ static int yylex(nebula::time::DatetimeParser::semantic_type* yylval, return token; } + diff --git a/src/common/time/parser/test/DateTimeParserTest.cpp b/src/common/time/parser/test/DateTimeParserTest.cpp index d5f2693fac9..0c3a58b4ea7 100644 --- a/src/common/time/parser/test/DateTimeParserTest.cpp +++ b/src/common/time/parser/test/DateTimeParserTest.cpp @@ -18,6 +18,7 @@ TEST(DatetimeReader, DateTime) { ASSERT_TRUE(result.ok()) << result.status(); EXPECT_EQ(nebula::DateTime(2019, 1, 3, 22, 22, 3, 233300), result.value()); } + // with offset { auto parser = time::DatetimeReader(); @@ -25,53 +26,56 @@ TEST(DatetimeReader, DateTime) { ASSERT_TRUE(result.ok()) << result.status(); EXPECT_EQ(nebula::DateTime(2019, 1, 3, 19, 52, 3, 233300), result.value()); } + // lack day { auto parser = time::DatetimeReader(); auto result = parser.readDatetime("2019-01T22:22:3.2333"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 3, 233300), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } + // lack month { auto parser = time::DatetimeReader(); auto result = parser.readDatetime("2019T22:22:3.2333"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 3, 233300), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } { auto parser = time::DatetimeReader(); auto result = parser.readDatetime("2019T22:22"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 0, 0), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } + + // lack month and day { auto parser = time::DatetimeReader(); - auto result = parser.readDatetime("2019T22"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 0, 0, 0), result.value()); + auto result = parser.readDatetime("2019T22:22"); + ASSERT_FALSE(result.ok()) << result.status(); } + // lack us { auto parser = time::DatetimeReader(); - auto result = parser.readDatetime("2019-1T22:22:3"); + auto result = parser.readDatetime("2019-1-1T22:22:3"); ASSERT_TRUE(result.ok()) << result.status(); EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 3, 0), result.value()); } + // lack second { auto parser = time::DatetimeReader(); - auto result = parser.readDatetime("2019-1T22:22"); + auto result = parser.readDatetime("2019-1-1T22:22"); ASSERT_TRUE(result.ok()) << result.status(); EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 22, 0, 0), result.value()); } + // lack minute { auto parser = time::DatetimeReader(); - auto result = parser.readDatetime("2019-1T22"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::DateTime(2019, 1, 1, 22, 0, 0, 0), result.value()); + auto result = parser.readDatetime("2019-1-1T22"); + ASSERT_FALSE(result.ok()) << result.status(); } + // datetime just include date { auto parser = time::DatetimeReader(); @@ -82,14 +86,12 @@ TEST(DatetimeReader, DateTime) { { auto parser = time::DatetimeReader(); auto result = parser.readDatetime("2019-1"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::DateTime(2019, 1, 1, 0, 0, 0, 0), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } { auto parser = time::DatetimeReader(); auto result = parser.readDatetime("2019"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::DateTime(2019, 1, 1, 0, 0, 0, 0), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } } @@ -163,22 +165,13 @@ TEST(DatetimeReader, Date) { { auto parser = time::DatetimeReader(); auto result = parser.readDate("2019-01"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::Date(2019, 1, 1), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } // lack month and day { auto parser = time::DatetimeReader(); auto result = parser.readDate("2019"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::Date(2019, 1, 1), result.value()); - } - // lack month - { - auto parser = time::DatetimeReader(); - auto result = parser.readDate("2019"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::Date(2019, 1, 1), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } } @@ -268,8 +261,7 @@ TEST(DatetimeReader, Time) { { auto parser = time::DatetimeReader(); auto result = parser.readTime("22"); - ASSERT_TRUE(result.ok()) << result.status(); - EXPECT_EQ(nebula::Time(22, 0, 0, 0), result.value()); + ASSERT_FALSE(result.ok()) << result.status(); } }