This commit is contained in:
Yarik Briukhovetskyi 2023-12-08 15:07:39 +00:00
parent d08fd931be
commit e13eec9c5a
2 changed files with 13 additions and 14 deletions

View File

@ -191,15 +191,14 @@ public:
case ResultType::DateTime64:
{
UInt32 scale = 0;
auto scale_date_time = 0;
if (third_argument == ThirdArgument::IsOrigin)
scale_date_time = assert_cast<const DataTypeDateTime64 &>(*arguments[0].type.get()).getScale();
if (isDate32(arguments[0].type) || isDateTime(arguments[0].type) || isDateTime64(arguments[0].type))
scale = assert_cast<const DataTypeDateTime64 &>(*arguments[0].type.get()).getScale();
if (interval_type->getKind() == IntervalKind::Nanosecond)
scale = 9 > scale_date_time ? 9 : scale_date_time;
scale = 9 > scale ? 9 : scale;
else if (interval_type->getKind() == IntervalKind::Microsecond)
scale = 6 > scale_date_time ? 6 : scale_date_time;
scale = 6 > scale ? 6 : scale;
else if (interval_type->getKind() == IntervalKind::Millisecond)
scale = 3 > scale_date_time ? 3 : scale_date_time;
scale = 3 > scale ? 3 : scale;
const size_t time_zone_arg_num = (arguments.size() == 2 || (arguments.size() == 3 && third_argument == ThirdArgument::IsTimezone)) ? 2 : 3;
return std::make_shared<DataTypeDateTime64>(scale, extractTimeZoneNameFromFunctionArguments(arguments, time_zone_arg_num, 0, false));

View File

@ -10,25 +10,25 @@ test intervals
- test microseconds
1980-12-12 12:12:12.123456
1980-12-12 12:12:12.123400
1980-12-12 12:12:12.12345600
1980-12-12 12:12:12.12345600
1980-12-12 12:12:12.123456
1980-12-12 12:12:12.123456
1930-12-12 12:12:12.123456
1930-12-12 12:12:12.123400
1930-12-12 12:12:12.12345600
1930-12-12 12:12:12.123456
2220-12-12 12:12:12.123456
2220-12-12 12:12:12.123400
2220-12-12 12:12:12.12345600
2220-12-12 12:12:12.123456
- test milliseconds
1980-12-12 12:12:12.123
1980-12-12 12:12:12.120
1980-12-12 12:12:12.123000
1980-12-12 12:12:12.123000
1980-12-12 12:12:12.123
1980-12-12 12:12:12.123
1930-12-12 12:12:12.123
1930-12-12 12:12:12.120
1930-12-12 12:12:12.123000
1930-12-12 12:12:12.123
2220-12-12 12:12:12.123
2220-12-12 12:12:12.120
2220-12-12 12:12:12.123000
2220-12-12 12:12:12.123
test add[...]seconds()
- test nanoseconds
1980-12-12 12:12:12.123456790