**Describe the unexpected behaviour**

Neither of these works:
```
now64(3, 'UTC')
now64('UTC', 3)
```
{
    if (arguments.size() == time_zone_arg_num + 1)
    {
        std::string time_zone = extractTimeZoneNameFromColumn(*arguments[time_zone_arg_num].column);
        if (time_zone.empty())
            throw Exception("Provided time zone must be non-empty and be a valid time zone", ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT);
        return DateLUT::instance(time_zone);
    }
    else
    {
        if (arguments.empty())
            return DateLUT::instance();
        const auto & dt_arg = arguments[datetime_arg_num].type.get();
        
        if (const auto * type = checkAndGetDataType<DataTypeDateTime>(dt_arg))
            return type->getTimeZone();
        if (const auto * type = checkAndGetDataType<DataTypeDateTime64>(dt_arg))
            return type->getTimeZone();
        return DateLUT::instance();
    }
}
}