diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java index 2bdb3e43ac1360..9cd48b53ae4242 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java @@ -600,7 +600,11 @@ private String convertToString(PrimitiveType type) { @Override public long getLongValue() { - return (year * 10000 + month * 100 + day) * 1000000L + hour * 10000 + minute * 100 + second; + if (this.getType().isDate() || this.getType().isDateV2()) { + return year * 10000 + month * 100 + day; + } else { + return (year * 10000 + month * 100 + day) * 1000000L + hour * 10000 + minute * 100 + second; + } } @Override diff --git a/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java b/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java index 7c45237296ee23..1175db44a5e74e 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/analysis/InPredicateTest.java @@ -175,7 +175,7 @@ public void testUnionWithDateV2() throws AnalysisException { InPredicate union = inPredicate1.union(inPredicate2); Assert.assertEquals(slotRef1, union.getChild(0)); Assert.assertTrue(union.isLiteralChildren()); - Assert.assertEquals(2, union.getListChildren().size()); + Assert.assertEquals(3, union.getListChildren().size()); Assert.assertTrue(union.getListChildren().contains(literalChild1)); Assert.assertTrue(union.getListChildren().contains(literalChild2)); Assert.assertTrue(union.getListChildren().contains(literalChild5)); diff --git a/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java b/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java index eb9f18684d69ec..70ec805e64aff7 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/rewrite/FEFunctionsTest.java @@ -146,49 +146,33 @@ public void dateV2DiffTest() throws AnalysisException { public void dateAddTest() throws AnalysisException { DateLiteral actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(1)); - DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIME); + DateLiteral expectedResult = new DateLiteral("2018-08-09", Type.DATE); Assert.assertEquals(expectedResult, actualResult); actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME); + expectedResult = new DateLiteral("2018-08-07", Type.DATE); Assert.assertEquals(expectedResult, actualResult); } @Test public void dateV2AddTest() throws AnalysisException { DateLiteral actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(1)); - DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIMEV2); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(1)); - expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIMEV2); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(1)); - expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIME); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIMEV2); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIMEV2); + DateLiteral expectedResult = new DateLiteral("2018-08-09", Type.DATEV2); Assert.assertEquals(expectedResult, actualResult); actualResult = FEFunctions.dateAdd(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME); + expectedResult = new DateLiteral("2018-08-07", Type.DATEV2); Assert.assertEquals(expectedResult, actualResult); } @Test public void addDateTest() throws AnalysisException { DateLiteral actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(1)); - DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIME); + DateLiteral expectedResult = new DateLiteral("2018-08-09", Type.DATE); Assert.assertEquals(expectedResult, actualResult); actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME); + expectedResult = new DateLiteral("2018-08-07", Type.DATE); Assert.assertEquals(expectedResult, actualResult); } @@ -196,29 +180,12 @@ public void addDateTest() throws AnalysisException { @Test public void addDateV2Test() throws AnalysisException { DateLiteral actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(1)); - DateLiteral expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIMEV2); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(1)); - expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIMEV2); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(1)); - expectedResult = new DateLiteral("2018-08-09 00:00:00", Type.DATETIME); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIMEV2); - Assert.assertEquals(expectedResult, actualResult); - - actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATE), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIMEV2); + DateLiteral expectedResult = new DateLiteral("2018-08-09", Type.DATEV2); Assert.assertEquals(expectedResult, actualResult); actualResult = FEFunctions.addDate(new DateLiteral("2018-08-08", Type.DATEV2), new IntLiteral(-1)); - expectedResult = new DateLiteral("2018-08-07 00:00:00", Type.DATETIME); + expectedResult = new DateLiteral("2018-08-07", Type.DATEV2); Assert.assertEquals(expectedResult, actualResult); - } @Test