**`timeSlots() ` is not working with DateTime64 date type at all, even when within normal range:**
```sql
SELECT timeSlots(toDateTime64('2012-01-01 12:20:00', 0, 'UTC'), 600)

Received exception from server (version 22.1.3):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type DateTime64(0, 'UTC') of first argument of function timeSlots. Must be DateTime.: While processing timeSlots(toDateTime64('2012-01-01 12:20:00', 0, 'UTC'), 600). (ILLEGAL_TYPE_OF_ARGUMENT)
```
{
        const auto * starts = checkAndGetColumn<ColumnUInt32>(arguments[0].column.get());
        const auto * const_starts = checkAndGetColumnConst<ColumnUInt32>(arguments[0].column.get());
        const auto * durations = checkAndGetColumn<ColumnUInt32>(arguments[1].column.get());
        const auto * const_durations = checkAndGetColumnConst<ColumnUInt32>(arguments[1].column.get());
        auto res = ColumnArray::create(ColumnUInt32::create());
        ColumnUInt32::Container & res_values = typeid_cast<ColumnUInt32 &>(res->getData()).getData();
        auto time_slot_size = TIME_SLOT_SIZE;
        if (arguments.size() == 3)
        {
            const auto * time_slot_column = checkAndGetColumn<ColumnConst>(arguments[2].column.get());
            if (!time_slot_column)
                throw Exception("Third argument for function " + getName() + " must be constant UInt32", ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT);
            if (time_slot_size = time_slot_column->getValue<UInt32>(); time_slot_size == 0)
                throw Exception("Third argument for function " + getName() + " must be greater than zero", ErrorCodes::ILLEGAL_COLUMN);
        }