-- check conversion of numbers to date/time -- SELECT toDate(toInt32(toDate32('1930-01-01'))), toDate(toInt32(toDate32('2151-01-01'))), toDate(toInt64(toDateTime64('1930-01-01 12:12:12.123', 3))), toDate(toInt64(toDateTime64('2151-01-01 12:12:12.123', 3))), toDate32(toInt32(toDate32('1900-01-01')) - 1), toDate32(toInt32(toDate32('2299-12-31')) + 1); -- check conversion of extended range type to normal range type -- SELECT toDate(toDate32('1930-01-01')), toDate(toDate32('2151-01-01')); SELECT toDate(toDateTime64('1930-01-01 12:12:12.12', 3, 'UTC'), 'UTC'), toDate(toDateTime64('2151-01-01 12:12:12.12', 3, 'UTC'), 'UTC'); SELECT toDateTime(toDateTime64('1930-01-01 12:12:12.12', 3, 'UTC'), 'UTC'), toDateTime(toDateTime64('2151-01-01 12:12:12.12', 3, 'UTC'), 'UTC'); SELECT toDateTime(toDate32('1930-01-01', 'UTC'), 'UTC'), toDateTime(toDate32('2151-01-01', 'UTC'), 'UTC'); SELECT toDateTime(toDate('2141-01-01', 'UTC'), 'UTC'); -- test DateTimeTransforms -- SELECT 'toStartOfDay'; SELECT toStartOfDay(toDate('2141-01-01', 'UTC'), 'UTC'), toStartOfDay(toDate32('1930-01-01', 'UTC'), 'UTC'), toStartOfDay(toDate32('2141-01-01', 'UTC'), 'UTC'), toStartOfDay(toDateTime64('1930-01-01 12:12:12.123', 3, 'UTC'), 'UTC'), toStartOfDay(toDateTime64('2141-01-01 12:12:12.123', 3, 'UTC'), 'UTC'); SELECT 'toStartOfWeek'; SELECT toStartOfWeek(toDate('1970-01-01')), toStartOfWeek(toDate32('1970-01-01')), toStartOfWeek(toDateTime('1970-01-01 10:10:10')), toStartOfWeek(toDateTime64('1970-01-01 10:10:10.123', 3)), toStartOfWeek(toDate32('1930-01-01')), toStartOfWeek(toDate32('2151-01-01')), toStartOfWeek(toDateTime64('1930-01-01 12:12:12.123', 3)), toStartOfWeek(toDateTime64('2151-01-01 12:12:12.123', 3)); SELECT 'toMonday'; SELECT toMonday(toDate('1970-01-02')), toMonday(toDate32('1930-01-01', 'UTC')), toMonday(toDate32('2151-01-01', 'UTC')), toMonday(toDateTime64('1930-01-01 12:12:12.123', 3, 'UTC'), 'UTC'), toMonday(toDateTime64('2151-01-01 12:12:12.123', 3, 'UTC'), 'UTC'); SELECT 'toStartOfMonth'; SELECT toStartOfMonth(toDate32('1930-01-01', 'UTC')), toStartOfMonth(toDate32('2151-01-01', 'UTC')), toStartOfMonth(toDateTime64('1930-01-01 12:12:12.123', 3, 'UTC'), 'UTC'), toStartOfMonth(toDateTime64('2151-01-01 12:12:12.123', 3, 'UTC'), 'UTC'); SELECT 'toStartOfMonth'; SELECT toStartOfMonth(toDate32('1930-01-01', 'UTC')), toStartOfMonth(toDate32('2151-01-01', 'UTC')), toStartOfMonth(toDateTime64('1930-01-01 12:12:12.123', 3, 'UTC'), 'UTC'), toStartOfMonth(toDateTime64('2151-01-01 12:12:12.123', 3, 'UTC'), 'UTC'); SELECT 'toLastDayOfMonth'; SELECT toLastDayOfMonth(toDate('2149-06-03')), toLastDayOfMonth(toDate32('1930-01-01', 'UTC')), toLastDayOfMonth(toDate32('2151-01-01', 'UTC')), toLastDayOfMonth(toDateTime64('1930-01-01 12:12:12.123', 3, 'UTC'), 'UTC'), toLastDayOfMonth(toDateTime64('2151-01-01 12:12:12.123', 3, 'UTC'), 'UTC'); SELECT 'toStartOfQuarter'; SELECT toStartOfQuarter(toDate32('1930-01-01', 'UTC')), toStartOfQuarter(toDate32('2151-01-01', 'UTC')), toStartOfQuarter(toDateTime64('1930-01-01 12:12:12.123', 3, 'UTC'), 'UTC'), toStartOfQuarter(toDateTime64('2151-01-01 12:12:12.123', 3, 'UTC'), 'UTC'); SELECT 'toStartOfYear'; SELECT toStartOfYear(toDate32('1930-01-01', 'UTC')), toStartOfYear(toDate32('2151-01-01', 'UTC')), toStartOfYear(toDateTime64('1930-01-01 12:12:12.123', 3, 'UTC'), 'UTC'), toStartOfYear(toDateTime64('2151-01-01 12:12:12.123', 3, 'UTC'), 'UTC');