[fix](cast) Add validity check for date conversion for non-vectorization (#12608)

actual result
select cast("0.0000031417" as date);
+------------------------------+
| CAST('0.0000031417' AS DATE) |
+------------------------------+
| 2000-00-00 |
+------------------------------+

expect result
select cast("0.0000031417" as date);
+------------------------------+
| CAST('0.0000031417' AS DATE) |
+------------------------------+
| NULL |
+------------------------------+
This commit is contained in:
yinzhijian
2022-09-16 09:08:53 +08:00
committed by GitHub
parent d906e97f1b
commit a97f63141e
7 changed files with 60 additions and 18 deletions

View File

@ -165,7 +165,10 @@ IntVal TimestampFunctions::day_of_month(FunctionContext* context, const DateTime
return IntVal::null();
}
const DateTimeValue& ts_value = DateTimeValue::from_datetime_val(ts_val);
return IntVal(ts_value.day());
if (ts_value.is_valid_date()) {
return IntVal(ts_value.day());
}
return IntVal::null();
}
IntVal TimestampFunctions::day_of_year(FunctionContext* context, const DateTimeVal& ts_val) {