diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteral.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteral.java index f2a136ae771905..955522c9797d50 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteral.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteral.java @@ -36,6 +36,7 @@ import java.time.temporal.ChronoField; import java.time.temporal.TemporalAccessor; import java.util.Set; +import java.util.function.UnaryOperator; /** * Date literal in Nereids. @@ -100,7 +101,7 @@ public DateLiteral(DateLiteral other, DataType type) { // normalize yymmdd -> yyyymmdd static String normalizeBasic(String s) { - java.util.function.UnaryOperator normalizeTwoDigit = (input) -> { + UnaryOperator normalizeTwoDigit = (input) -> { String yy = input.substring(0, 2); int year = Integer.parseInt(yy); if (year >= 0 && year <= 69) { @@ -265,6 +266,8 @@ protected static TemporalAccessor parse(String s) { try { TemporalAccessor dateTime; + // remove suffix ' ' + s = s.trim(); // parse condition without '-' and ':' boolean containsPunctuation = false; for (int i = 0; i < s.length(); i++) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteralTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteralTest.java index a87a177a1b343d..4212d89276082c 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteralTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/literal/DateLiteralTest.java @@ -214,4 +214,10 @@ void testPoint() { new DateTimeV2Literal("2020.02.01 00.00.00.000001"); Assertions.assertThrows(AnalysisException.class, () -> new DateTimeV2Literal("2020.02.01 00.00.00.0000001")); } + + @Test + void testSuffixSpace() { + new DateLiteral("2016-07-02 "); + new DateLiteral("2016-07-02 00:00:00 "); + } }