When you parse Date column which have values bigger than by different format 

```sql
DROP TABLE IF EXISTS test_date_imports;
create temporary table test_date_imports (f String, t Date);
insert into test_date_imports(t) format TSV 2200-01-01
insert into test_date_imports format CSV 'csv',2200-01-01
insert into test_date_imports format JSONEachRow {"f":"JSONEachRow","t":"2200-01-01"}
insert into test_date_imports values ('values','2200-01-01')

SELECT * FROM test_date_imports FORMAT PrettyCompactMonoBlock;

┌─f───────────┬──────────t─┐
│             │ 2149-06-06 │
│ csv         │ 2020-07-27 │<-- it looks like parsing happened via Date32 or DateTime64 path, and then casted with overflow
│ JSONEachRow │ 2149-06-06 │
│ values      │ 2149-06-06 │
└─────────────┴────────────┘

TRUNCATE TABLE test_date_imports;
insert into test_date_imports(t) format TSV 9999-01-01
insert into test_date_imports format CSV 'csv',9999-01-01
insert into test_date_imports format JSONEachRow {"f":"JSONEachRow","t":"9999-01-01"}
insert into test_date_imports values ('values','9999-01-01')

SELECT * FROM test_date_imports FORMAT PrettyCompactMonoBlock

SELECT * FROM test_date_imports FORMAT PrettyCompactMonoBlock
┌─f───────────┬──────────t─┐
│             │ 2149-06-06 │
│ csv         │ 2104-06-06 │
│ JSONEachRow │ 2149-06-06 │
│ values      │ 2149-06-06 │
└─────────────┴────────────┘

4 rows in set. Elapsed: 0.002 sec. 
```

P.S. It's not the edge case found by QA. It's a real-life case from the end-user report. IRL it was the '[end of time](https://softwareengineering.stackexchange.com/questions/164843/is-there-a-constant-for-end-of-time)' date exported by another database as '9999-12-31' which was always stored in ClickHouse as '2149-06-06' but after importing from CSV as '2104-06-06'
{
    static constexpr bool throw_exception = std::is_same_v<ReturnType, void>;
    LocalDate local_date;
    if constexpr (throw_exception)
        readDateTextImpl<ReturnType>(local_date, buf);
    else if (!readDateTextImpl<ReturnType>(local_date, buf))
        return false;
    ExtendedDayNum ret = DateLUT::instance().makeDayNum(local_date.year(), local_date.month(), local_date.day());
    convertToDayNum(date,ret);
    return ReturnType(true);
}
template <typename ReturnType = void>
inline ReturnType readDateTextImpl(ExtendedDayNum & date, ReadBuffer & buf)
{
    static constexpr bool throw_exception = std::is_same_v<ReturnType, void>;
    LocalDate local_date;
    if constexpr (throw_exception)
        readDateTextImpl<ReturnType>(local_date, buf);
    else if (!readDateTextImpl<ReturnType>(local_date, buf))
        return false;
    
    date = DateLUT::instance().makeDayNum(local_date.year(), local_date.month(), local_date.day(), -static_cast<Int32>(DateLUT::instance().getDayNumOffsetEpoch()));
    return ReturnType(true);
}
inline void readDateText(LocalDate & date, ReadBuffer & buf)