**Describe the issue**
```
milovidov-desktop :) SELECT parseDateTimeBestEffort('20220101-010203')

SELECT parseDateTimeBestEffort('20220101-010203')


0 rows in set. Elapsed: 0.153 sec. 

Received exception:
Code: 41. DB::Exception: Cannot read DateTime: unexpected number of decimal digits for time zone offset: 6: While processing parseDateTimeBestEffort('20220101-010203'). (CANNOT_PARSE_DATETIME)
```
else if (c == 'Z')
            {
                ++in.position();
                has_time_zone_offset = true;
            }
            else if (c == '.')  
            {
                if (!has_time)
                    return on_error("Cannot read DateTime: unexpected point symbol", ErrorCodes::CANNOT_PARSE_DATETIME);
                ++in.position();
                num_digits = readDigits(digits, sizeof(digits), in);
                if (fractional)
                {
                    using FractionalType = typename std::decay<decltype(fractional->value)>::type;
                    
                    
                    
                    num_digits = std::min(static_cast<size_t>(std::numeric_limits<FractionalType>::digits10), num_digits);
                    fractional->digits = num_digits;
                    readDecimalNumber(fractional->value, num_digits, digits);
                }
            }
            else if (c == '+' || c == '-')
            {
                ++in.position();
                has_time_zone_offset = true;
                if (c == '-')
                    time_zone_offset_negative = true;
                num_digits = readDigits(digits, sizeof(digits), in);
                if (num_digits == 4)