add test case and doc

This commit is contained in:
liuneng 2024-08-28 16:06:09 +08:00 committed by liuneng1994
parent 74f99d1f07
commit 5e0000c4ca
8 changed files with 61 additions and 17 deletions

View File

@ -2019,7 +2019,7 @@ Alias: `dateTrunc`.
`unit` argument is case-insensitive.
- `value` — Date and time. [DateTime](../data-types/datetime.md) or [DateTime64](../data-types/datetime64.md).
- `value` — Date and time. [Date](../data-types/date.md), [Date32](../data-types/date32.md), [DateTime](../data-types/datetime.md) or [DateTime64](../data-types/datetime64.md).
- `timezone` — [Timezone name](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-timezone) for the returned value (optional). If not specified, the function uses the timezone of the `value` parameter. [String](../data-types/string.md).
**Returned value**

View File

@ -194,7 +194,7 @@ private:
if (time_column_vec)
return dispatchForIntervalColumn(assert_cast<const DataTypeDate32 &>(time_column_type), *time_column_vec, interval_column, result_type, time_zone, input_rows_count);
}
throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal column for 1st argument of function {}, expected a Date, DateTime or DateTime64", getName());
throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "Illegal column for 1st argument of function {}, expected a Date, Date32, DateTime or DateTime64", getName());
}
template <typename TimeDataType, typename TimeColumnType>

View File

@ -1,2 +1 @@
1
2024-08-26 00:00:00

View File

@ -1,2 +1 @@
SELECT toStartOfDay(now()) = toDateTime(toDate(now()));
SELECT toStartOfDay(toDate32(now()));

View File

@ -1,16 +1,11 @@
2022-03-01 00:00:00
2022-03-01
2022-02-28
2022-02-28
2022-03-01 00:00:00
2022-03-01
2022-02-28
2022-02-28
2022-03-01 00:00:00
2022-03-01
2022-03-01 00:00:00
2022-03-01
2022-02-28
2022-02-28
2022-03-01 12:12:12.012000000
2022-03-01 12:12:12.012346

View File

@ -1,17 +1,12 @@
SELECT dateTrunc('DAY', toDateTime('2022-03-01 12:55:55'));
SELECT dateTrunc('MONTH', toDateTime64('2022-03-01 12:55:55', 2));
SELECT dateTrunc('WEEK', toDate('2022-03-01'));
SELECT dateTrunc('WEEK', toDate32('2022-03-01'));
SELECT dateTrunc('Day', toDateTime('2022-03-01 12:55:55'));
SELECT dateTrunc('Month', toDateTime64('2022-03-01 12:55:55', 2));
SELECT dateTrunc('Week', toDate('2022-03-01'));
SELECT dateTrunc('Week', toDate32('2022-03-01'));
SELECT dateTrunc('day', toDateTime('2022-03-01 12:55:55'));
SELECT dateTrunc('month', toDateTime64('2022-03-01 12:55:55', 2));
SELECT dateTrunc('day', toDate32('2022-03-01'));
SELECT dateTrunc('month', toDate32('2022-03-01'));
SELECT dateTrunc('week', toDate('2022-03-01'));
SELECT dateTrunc('week', toDate32('2022-03-01'));
SELECT dateTrunc('Nanosecond', toDateTime64('2022-03-01 12:12:12.0123', 3));
SELECT dateTrunc('MicroSecond', toDateTime64('2022-03-01 12:12:12.0123456', 7));
SELECT dateTrunc('MILLISECOND', toDateTime64('2022-03-01 12:12:12.012324251', 9));
@ -30,6 +25,3 @@ SELECT dateTrunc('MILLISECOND', toDateTime('2022-03-01')); -- { serverError ILL
SELECT dateTrunc('Nanosecond', toDate('2022-03-01')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
SELECT dateTrunc('MicroSecond', toDate('2022-03-01')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
SELECT dateTrunc('MILLISECOND', toDate('2022-03-01')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
SELECT dateTrunc('Nanosecond', toDate32('2022-03-01')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
SELECT dateTrunc('MicroSecond', toDate32('2022-03-01')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
SELECT dateTrunc('MILLISECOND', toDate32('2022-03-01')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }

View File

@ -0,0 +1,33 @@
-- { echoOn }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 YEAR);
2022-01-01
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 QUARTER);
2022-07-01
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MONTH);
2022-09-01
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 WEEK);
2022-09-12
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 DAY);
2022-09-16 00:00:00
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 HOUR); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MINUTE); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 SECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MILLISECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MICROSECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 NANOSECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('YEAR', toDate32('2022-09-16'));
2022-01-01
select date_trunc('QUARTER', toDate32('2022-09-16'));
2022-07-01
select date_trunc('MONTH', toDate32('2022-09-16'));
2022-09-01
select date_trunc('WEEK', toDate32('2022-09-16'));
2022-09-12
select date_trunc('DAY', toDate32('2022-09-16'));
2022-09-16 00:00:00
select date_trunc('HOUR', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('MINUTE', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('SECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('MILLISECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('MICROSECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('NANOSECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }

View File

@ -0,0 +1,26 @@
-- { echoOn }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 YEAR);
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 QUARTER);
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MONTH);
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 WEEK);
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 DAY);
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 HOUR); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MINUTE); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 SECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MILLISECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 MICROSECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select toStartOfInterval(toDate32('2022-09-16'), INTERVAL 1 NANOSECOND); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('YEAR', toDate32('2022-09-16'));
select date_trunc('QUARTER', toDate32('2022-09-16'));
select date_trunc('MONTH', toDate32('2022-09-16'));
select date_trunc('WEEK', toDate32('2022-09-16'));
select date_trunc('DAY', toDate32('2022-09-16'));
select date_trunc('HOUR', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('MINUTE', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('SECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('MILLISECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('MICROSECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }
select date_trunc('NANOSECOND', toDate32('2022-09-16')); -- { serverError ILLEGAL_TYPE_OF_ARGUMENT }