sql >> Databáze >  >> RDS >> Mysql

datum čas správný v aplikaci, ale nesprávný v mysql [časové pásmo]

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.




  1. Je nějaký problém s instalací psycopg2 ve virtualenv na MacOS catalina s nainstalovaným PostgreSQL 12.1?

  2. Rozdělte hodnoty oddělené čárkou do jednotlivých řádků

  3. Chyba MySQL „pokud existuje“.

  4. Nainstalujte a nakonfigurujte MySQL Workbench na Ubuntu 16.04