Good question.
The documentation says it should be allowed.
info date 'Date input formats' 'Calendar date items'
For numeric months, the ISO 8601 format `YEAR-MONTH-DAY' is allowed,
where YEAR is any positive number, ...
A leading zero must be present if a number is less than ten.
If YEAR is 68 or smaller, then 2000 is added to it; otherwise, if YEAR is less than 100, then 1900 is added to it.
Are you on a 32-bit system?
Do you get an error with dates after 2038-01-20 as well, e.g.
date -d '2038-01-20'
If so, it sounds like GNU date is using a 32-bit time value.
I'm not sure how you can fix this other than using a 64-bit system or using a different tool, for example DateTime in Perl or datetime in Python.
Some background:
Unix times count the number of seconds from January 1 1970 using an integer value. If the system uses 32-bit integers, it can only count 2.1 billion seconds forward (up to 2038-01-19 03:14:02 UTC) and 2.1 billion seconds backwards (back to 1901-12-13 20:45:52 UTC).
More information at: