**Describe the unexpected behaviour**

Neither of these works:
```
now64(3, 'UTC')
now64('UTC', 3)
```
{
    const ColumnConst * time_zone_column = checkAndGetColumnConst<ColumnString>(&column);
    if (!time_zone_column)
        throw Exception("Illegal column " + column.getName()
            + " of time zone argument of function, must be constant string",
            ErrorCodes::ILLEGAL_COLUMN);
    return time_zone_column->getValue<String>();
}
std::string extractTimeZoneNameFromFunctionArguments(const ColumnsWithTypeAndName & arguments, size_t time_zone_arg_num, size_t datetime_arg_num)
{
    
    if (arguments.size() == time_zone_arg_num + 1 && arguments[time_zone_arg_num].column)
    {
        return extractTimeZoneNameFromColumn(*arguments[time_zone_arg_num].column);
    }
    else
    {
        if (arguments.empty())
            return {};
        
        if (const auto * type = checkAndGetDataType<DataTypeDateTime>(arguments[datetime_arg_num].type.get()))
            return type->hasExplicitTimeZone() ? type->getTimeZone().getTimeZone() : std::string();
        if (const auto * type = checkAndGetDataType<DataTypeDateTime64>(arguments[datetime_arg_num].type.get()))
            return type->hasExplicitTimeZone() ? type->getTimeZone().getTimeZone() : std::string();
        return {};
    }
}
const DateLUTImpl & extractTimeZoneFromFunctionArguments(const ColumnsWithTypeAndName & arguments, size_t time_zone_arg_num, size_t datetime_arg_num)