日付時刻の最小値最大値とMySQL

Java8 以降、java.time.LocalDate と java.time.LocalDateTime の最小値/最大値は、

LocalDate.MIN → -999999999-01-01
LocalDate.MAX → +999999999-12-31

LocalDateTime.MIN → -999999999-01-01T00:00
LocalDateTime.MIN → +999999999-12-31T23:59:59.999999999

である。
MySQL データベースのTIMESTAMP型は、このような言語の数学的な最小値と最大値は
データを作れません。
JSTのdatabase の場合、UTCエポック時刻 +9:00 1970-01-01 09:00:00
の時刻でデータを作ろうとすると、
ERROR 1292: 1292: Incorrect datetime value:
+1秒の 1970-01-01 09:00:01 ならデータを作れる。
これはつまり、Java エポックの時刻(JST

LocalDateTime.ofEpochSecond(3600*9L, 0, ZoneOffset.UTC)

や、

OffsetDateTime.of(LocalDate.of(1970, 1, 1), LocalTime.of(0, 0, 0), ZoneOffset.UTC)||<

は、ダメで

LocalDateTime.ofEpochSecond(3600*9L + 1, 0, ZoneOffset.UTC)
OffsetDateTime.of(LocalDate.of(1970, 1, 1), LocalTime.of(0, 0, 1), ZoneOffset.UTC)||<

ならばOKなのである。
2038年問題の 2038-01-19 03:14:07 UTC でも同様のことが、TIMESTAMP では、
ERROR 1292: 1292: Incorrect datetime value:
のエラーを引き起こします。

解決策として、DATETIME型を用いることなのですが、
DATETIME型の場合、、

0000-01-01 00:00:00
9999-12-31 23:59:59

という値を入れることができて、
Javaでは、

OffsetDateTime.of(LocalDate.of(0, 1, 1), LocalTime.of(0, 0, 0), ZoneOffset.UTC)

OffsetDateTime.of(LocalDate.of(9999, 12, 31), LocalTime.of(14, 59, 59), ZoneOffset.UTC)

でデータをセットできます。