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: case ResultType::DateTime64:
{ {
UInt32 scale = 0; UInt32 scale = 0;
auto scale_date_time = 0; if (isDate32(arguments[0].type) || isDateTime(arguments[0].type) || isDateTime64(arguments[0].type))
if (third_argument == ThirdArgument::IsOrigin) scale = assert_cast<const DataTypeDateTime64 &>(*arguments[0].type.get()).getScale();
scale_date_time = assert_cast<const DataTypeDateTime64 &>(*arguments[0].type.get()).getScale();
if (interval_type->getKind() == IntervalKind::Nanosecond) 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) 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) 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; 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)); return std::make_shared<DataTypeDateTime64>(scale, extractTimeZoneNameFromFunctionArguments(arguments, time_zone_arg_num, 0, false));

View File

@ -10,25 +10,25 @@ test intervals
- test microseconds - test microseconds
1980-12-12 12:12:12.123456 1980-12-12 12:12:12.123456
1980-12-12 12:12:12.123400 1980-12-12 12:12:12.123400
1980-12-12 12:12:12.12345600 1980-12-12 12:12:12.123456
1980-12-12 12:12:12.12345600 1980-12-12 12:12:12.123456
1930-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.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.123456
2220-12-12 12:12:12.123400 2220-12-12 12:12:12.123400
2220-12-12 12:12:12.12345600 2220-12-12 12:12:12.123456
- test milliseconds - test milliseconds
1980-12-12 12:12:12.123 1980-12-12 12:12:12.123
1980-12-12 12:12:12.120 1980-12-12 12:12:12.120
1980-12-12 12:12:12.123000 1980-12-12 12:12:12.123
1980-12-12 12:12:12.123000 1980-12-12 12:12:12.123
1930-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.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.123
2220-12-12 12:12:12.120 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 add[...]seconds()
- test nanoseconds - test nanoseconds
1980-12-12 12:12:12.123456790 1980-12-12 12:12:12.123456790