mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 08:02:02 +00:00
timezone support for Tumble/Hop Start/End
This commit is contained in:
parent
56bcfc2877
commit
71d9d80275
@ -220,15 +220,19 @@ struct WindowImpl<TUMBLE_START>
|
||||
if (arguments.size() == 1)
|
||||
{
|
||||
auto type_ = WhichDataType(arguments[0].type);
|
||||
if (!type_.isTuple() && !type_.isUInt32())
|
||||
if (type_.isTuple())
|
||||
return std::static_pointer_cast<const DataTypeTuple>(arguments[0].type)->getElement(0);
|
||||
else if (type_.isUInt32())
|
||||
return std::make_shared<DataTypeDateTime>();
|
||||
else
|
||||
throw Exception(
|
||||
"Illegal type of first argument of function " + function_name + " should be DateTime, Tuple or UInt32", ErrorCodes::ILLEGAL_COLUMN);
|
||||
"Illegal type of first argument of function " + function_name + " should be DateTime, Tuple or UInt32",
|
||||
ErrorCodes::ILLEGAL_COLUMN);
|
||||
}
|
||||
else
|
||||
{
|
||||
WindowImpl<TUMBLE>::getReturnType(arguments, function_name);
|
||||
return std::static_pointer_cast<const DataTypeTuple>(WindowImpl<TUMBLE>::getReturnType(arguments, function_name))->getElement(0);
|
||||
}
|
||||
return std::make_shared<DataTypeDateTime>();
|
||||
}
|
||||
|
||||
[[maybe_unused]] static ColumnPtr dispatchForColumns(const ColumnsWithTypeAndName & arguments, const String & function_name)
|
||||
@ -563,16 +567,19 @@ struct WindowImpl<HOP_START>
|
||||
if (arguments.size() == 1)
|
||||
{
|
||||
auto type_ = WhichDataType(arguments[0].type);
|
||||
if (!type_.isTuple() && !type_.isUInt32())
|
||||
if (type_.isTuple())
|
||||
return std::static_pointer_cast<const DataTypeTuple>(arguments[0].type)->getElement(0);
|
||||
else if (type_.isUInt32())
|
||||
return std::make_shared<DataTypeDateTime>();
|
||||
else
|
||||
throw Exception(
|
||||
"Illegal type of first argument of function " + function_name + " should be DateTime, Tuple or UInt32",
|
||||
ErrorCodes::ILLEGAL_COLUMN);
|
||||
}
|
||||
else
|
||||
{
|
||||
WindowImpl<HOP>::getReturnType(arguments, function_name);
|
||||
return std::static_pointer_cast<const DataTypeTuple>(WindowImpl<HOP>::getReturnType(arguments, function_name))->getElement(0);
|
||||
}
|
||||
return std::make_shared<DataTypeDateTime>();
|
||||
}
|
||||
|
||||
[[maybe_unused]] static ColumnPtr dispatchForColumns(const ColumnsWithTypeAndName & arguments, const String & function_name)
|
||||
|
@ -18,21 +18,21 @@ SELECT TUMBLE(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' YEAR,
|
||||
SELECT TUMBLE(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa');
|
||||
('2020-01-09 00:00:00','2020-01-10 00:00:00')
|
||||
SELECT TUMBLE_START(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa');
|
||||
2020-01-09 14:00:00
|
||||
2020-01-09 00:00:00
|
||||
SELECT toDateTime(TUMBLE_START(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-09 00:00:00
|
||||
SELECT toDateTime(TUMBLE_START(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-09 00:00:00
|
||||
SELECT TUMBLE_START(TUMBLE(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa'));
|
||||
2020-01-09 14:00:00
|
||||
2020-01-09 00:00:00
|
||||
SELECT TUMBLE_END(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa');
|
||||
2020-01-10 14:00:00
|
||||
2020-01-10 00:00:00
|
||||
SELECT toDateTime(TUMBLE_END(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-10 00:00:00
|
||||
SELECT toDateTime(TUMBLE_END(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-10 00:00:00
|
||||
SELECT TUMBLE_END(TUMBLE(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, 'US/Samoa'));
|
||||
2020-01-10 14:00:00
|
||||
2020-01-10 00:00:00
|
||||
SELECT HOP(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL 1 SECOND, INTERVAL 3 SECOND, 'US/Samoa');
|
||||
('2020-01-09 11:59:59','2020-01-09 12:00:02')
|
||||
SELECT HOP(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL 1 MINUTE, INTERVAL 3 MINUTE, 'US/Samoa');
|
||||
@ -52,18 +52,18 @@ SELECT HOP(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL 1 YEAR, INTER
|
||||
SELECT HOP(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa');
|
||||
('2020-01-07 00:00:00','2020-01-10 00:00:00')
|
||||
SELECT HOP_START(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa');
|
||||
2020-01-07 14:00:00
|
||||
2020-01-07 00:00:00
|
||||
SELECT toDateTime(HOP_START(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-07 00:00:00
|
||||
SELECT toDateTime(HOP_START(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-07 00:00:00
|
||||
SELECT HOP_START(HOP(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa'));
|
||||
2020-01-07 14:00:00
|
||||
2020-01-07 00:00:00
|
||||
SELECT HOP_END(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa');
|
||||
2020-01-10 14:00:00
|
||||
2020-01-10 00:00:00
|
||||
SELECT toDateTime(HOP_END(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-10 00:00:00
|
||||
SELECT toDateTime(HOP_END(toDateTime('2020-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa'), 'US/Samoa');
|
||||
2020-01-10 00:00:00
|
||||
SELECT HOP_END(HOP(toDateTime('2019-01-09 12:00:01', 'US/Samoa'), INTERVAL '1' DAY, INTERVAL '3' DAY, 'US/Samoa'));
|
||||
2019-01-10 14:00:00
|
||||
2019-01-10 00:00:00
|
||||
|
Loading…
Reference in New Issue
Block a user