Jaké jsou typy sloupců v MySQL? Mám podezření, že je DATETIME. Tento typ neukládá „okamžik v čase“, ukládá „hodinu na hodinách“, takže může znamenat různý okamžik v různých časových pásmech.
Když ovladač MySQL zapíše java.util.Date do sloupce DATETIME, musí zvolit nějaké časové pásmo, aby se zapsalo "hodina na hodinách", protože stejný java.util.Date může znamenat jinou hodinu v různých časových pásmech. Ukládá hodinu jako v místním časovém pásmu serveru MySQL.
LocalDateTime tento problém nemá, protože je jako DATETIME. Představuje hodinu na hodinách, nikoli časový okamžik, takže rok/měsíc/den-hodina/minuta/sekunda jsou pouze uloženy v databázi. Upozornění v protokolu hibernace LocalDateTime je uvedeno tak, jak je, zatímco vedle Date je časové pásmo ("CST").
Obecně je dobrým zvykem ukládat čas vždy v UTC, takže používejte DateTime, nikoli Date ani LocalDateTime. DateTime s konvertorem Jadara vždy ukládá/čte DATETIME jako UTC.