Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datum und Uhrzeit in der App richtig, aber in MySQL falsch [Zeitzone]

Welche Arten von Spalten gibt es in MySQL? Ich vermute, es ist DATETIME. Dieser Typ speichert nicht "Zeitpunkt", sondern "Stunde auf der Uhr", kann also unterschiedliche Zeitpunkte in verschiedenen Zeitzonen bedeuten.

Wenn der MySQL-Treiber java.util.Date in die DATETIME-Spalte schreibt, muss er eine Zeitzone auswählen, um "Stunde auf Uhr" zu schreiben, da dasselbe java.util.Date in verschiedenen Zeitzonen unterschiedliche Stunden bedeuten kann. Es speichert Stunden wie in der lokalen Zeitzone des MySQL-Servers.

LocalDateTime hat dieses Problem nicht, weil es wie DATETIME ist. Es stellt die Stunde auf einer Uhr dar, nicht den Zeitpunkt, daher werden Jahr/Monat/Tag-Stunde/Minute/Sekunde nur in der Datenbank gespeichert. Beachten Sie, dass LocalDateTime im Ruhezustandsprotokoll unverändert angegeben wird, während neben Date.

die Zeitzone ("CST") steht

Im Allgemeinen empfiehlt es sich, die Uhrzeit immer in UTC zu speichern, verwenden Sie also DateTime, nicht Date oder LocalDateTime. DateTime mit jadira converter speichert/liest DATETIME immer als UTC.