```
SELECT toStartOfDay(yesterday())


Received exception from server (version 20.10.1):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Function toStartOfDay supports a 2nd argument (optional) that must be non-empty and be a valid time zone.


SELECT toStartOfDay(today())


Received exception from server (version 20.10.1):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Function toStartOfDay supports a 2nd argument (optional) that must be non-empty and be a valid time zone.

```
because of https://github.com/ClickHouse/ClickHouse/pull/14509
{
        IFunction::Monotonicity is_monotonic { true };
        IFunction::Monotonicity is_not_monotonic;
        if (std::is_same_v<typename Transform::FactorTransform, ZeroTransform>)
        {
            is_monotonic.is_always_monotonic = true;
            return is_monotonic;
        }
        
        const DateLUTImpl & date_lut = DateLUT::instance();
        if (left.isNull() || right.isNull())
            return is_not_monotonic;
        
        if (checkAndGetDataType<DataTypeDate>(&type))
        {
            return Transform::FactorTransform::execute(UInt16(left.get<UInt64>()), date_lut)
                == Transform::FactorTransform::execute(UInt16(right.get<UInt64>()), date_lut)
                ? is_monotonic : is_not_monotonic;
        }
        else
        {
            return Transform::FactorTransform::execute(UInt32(left.get<UInt64>()), date_lut)
                == Transform::FactorTransform::execute(UInt32(right.get<UInt64>()), date_lut)
                ? is_monotonic : is_not_monotonic;
        }
    }
};
}