diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java index 2445b5e196..a71a7c9f0c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java @@ -1559,10 +1559,9 @@ public class FunctionCallExpr extends Expr { && (args[ix].isArrayType()) && ((ArrayType) args[ix]).getItemType().isDecimalV3()))) { continue; - } else if (!argTypes[i].matchesType(args[ix]) && !( - argTypes[i].isDateOrDateTime() && args[ix].isDateOrDateTime()) + } else if (!argTypes[i].matchesType(args[ix]) && (!fn.getReturnType().isDecimalV3() - || (argTypes[i].isValid() && !argTypes[i].isDecimalV3() && args[ix].isDecimalV3()))) { + || (argTypes[i].isValid() && !argTypes[i].isDecimalV3() && args[ix].isDecimalV3()))) { uncheckedCastChild(args[ix], i); } } diff --git a/regression-test/data/query_p0/sql_functions/datetime_functions/test_date_function.out b/regression-test/data/query_p0/sql_functions/datetime_functions/test_date_function.out index d32137d1b2..c5aeb461fc 100644 --- a/regression-test/data/query_p0/sql_functions/datetime_functions/test_date_function.out +++ b/regression-test/data/query_p0/sql_functions/datetime_functions/test_date_function.out @@ -263,6 +263,9 @@ February -- !sql -- 2020-09-01T00:00 +-- !sql_year_floor -- +2023-01-01T00:00 + -- !sql -- 2020-01-01T00:00 diff --git a/regression-test/suites/query_p0/sql_functions/datetime_functions/test_date_function.groovy b/regression-test/suites/query_p0/sql_functions/datetime_functions/test_date_function.groovy index b344198391..37514224f4 100644 --- a/regression-test/suites/query_p0/sql_functions/datetime_functions/test_date_function.groovy +++ b/regression-test/suites/query_p0/sql_functions/datetime_functions/test_date_function.groovy @@ -328,6 +328,7 @@ suite("test_date_function") { qt_sql """ select str_to_date(test_datetime, "%Y-%m-%d %H:%i:%s") from ${tableName};""" // TIME_ROUND + qt_sql_year_floor """ select year_floor(cast('2023-04-28' as date)); """ qt_sql """ SELECT YEAR_FLOOR('20200202000000') """ qt_sql """ SELECT MONTH_CEIL(CAST('2020-02-02 13:09:20' AS DATETIME), 3) """ qt_sql """ SELECT WEEK_CEIL('2020-02-02 13:09:20', '2020-01-06') """