diff --git a/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctions.java b/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctions.java index 72296be6eabda..02a60eb32ce12 100644 --- a/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctions.java +++ b/fe/fe-core/src/main/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctions.java @@ -232,6 +232,17 @@ public static ConstantOperator dateDiff(ConstantOperator first, ConstantOperator first.getDatetime().truncatedTo(ChronoUnit.DAYS)).toDays()); } + @ConstantFunction.List(list = { + @ConstantFunction(name = "to_days", argTypes = {DATETIME}, returnType = INT, isMonotonic = true), + @ConstantFunction(name = "to_days", argTypes = {DATE}, returnType = INT, isMonotonic = true) + }) + public static ConstantOperator to_days(ConstantOperator first) { + ConstantOperator second = ConstantOperator.createDatetime(LocalDateTime.of(0000, 01, 01, 00, 00, 00)); + return ConstantOperator.createInt((int) Duration.between( + second.getDatetime().truncatedTo(ChronoUnit.DAYS), + first.getDatetime().truncatedTo(ChronoUnit.DAYS)).toDays()); + } + @ConstantFunction.List(list = { @ConstantFunction(name = "years_add", argTypes = {DATETIME, INT}, returnType = DATETIME, isMonotonic = true), diff --git a/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctionsTest.java b/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctionsTest.java index 6f9eb1da46624..c2b47037745a1 100644 --- a/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctionsTest.java +++ b/fe/fe-core/src/test/java/com/starrocks/sql/optimizer/rewrite/ScalarOperatorFunctionsTest.java @@ -125,6 +125,11 @@ public void dateDiff() { assertEquals(-1572, ScalarOperatorFunctions.dateDiff(O_DT_20101202_023010, O_DT_20150323_092355).getInt()); } + @Test + public void to_days() { + assertEquals(734443, ScalarOperatorFunctions.to_days(O_DT_20101102_183010).getInt()); + } + @Test public void yearsAdd() { assertEquals("2025-03-23T09:23:55",