Reproduces on master.

```
SELECT toDateTime64('2021-03-22', 3, 'Asia/Tehran')

Query id: 26f7c373-f473-4209-8976-6ada79a8627f

┌─toDateTime64('2021-03-22', 3, 'Asia/Tehran')─┐
│                      2157-04-28 06:28:16.000 │
└──────────────────────────────────────────────┘
```
LUTIndex years_months_lut[DATE_LUT_YEARS * 12];
    
    Time offset_at_start_of_epoch;
    
    Time offset_at_start_of_lut;
    bool offset_is_whole_number_of_hours_during_epoch;
    bool offset_is_whole_number_of_minutes_during_epoch;
    
    std::string time_zone;
    inline LUTIndex findIndex(Time t) const
    {
        
        Time guess = (t / 86400) + daynum_offset_epoch;
        
        if (unlikely(t < 0))
            --guess;
        if (guess < 0)
            return LUTIndex(0);
        if (guess >= DATE_LUT_SIZE)
            return LUTIndex(DATE_LUT_SIZE - 1);
        
        if (t >= lut[guess].date)
        {
            if (guess + 1 >= DATE_LUT_SIZE || t < lut[guess + 1].date)
                return LUTIndex(guess);
            return LUTIndex(guess + 1);
        }
        return LUTIndex(guess ? guess - 1 : 0);
    }
    inline LUTIndex toLUTIndex(DayNum d) const