Mysql
 sql >> Baza danych >  >> RDS >> Mysql

data i godzina poprawna w aplikacji, ale błędna w mysql [strefa czasowa]

Jakie są typy kolumn w MySQL? Podejrzewam, że to DATETIME. Ten typ nie przechowuje "momentu w czasie", przechowuje "godzinę na zegarze", więc może oznaczać inny moment w różnych strefach czasowych.

Gdy sterownik MySQL zapisuje java.util.Date do kolumny DATETIME, musi wybrać jakąś strefę czasową, aby zapisać "godzinę na zegarze", ponieważ ten sam java.util.Date może oznaczać inną godzinę w różnych strefach czasowych. Przechowuje godzinę jak w lokalnej strefie czasowej serwera MySQL.

LocalDateTime nie ma tego problemu, ponieważ jest jak DATETIME. Reprezentuje godzinę na zegarze, a nie moment w czasie, dlatego rok/miesiąc/dzień-godzina/minuta/sekunda są po prostu zapisywane w bazie danych. Uwaga w dzienniku hibernacji LocalDateTime jest podana bez zmian, podczas gdy obok daty znajduje się strefa czasowa („CST”).

Ogólnie rzecz biorąc, dobrą praktyką jest przechowywanie czasu zawsze w UTC, więc używaj DateTime, a nie Date ani LocalDateTime. DateTime z konwerterem jadira zawsze przechowuje/odczytuje DATETIME jako UTC.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskiwanie większej liczby wierszy na grupę za pomocą groupBy w Eloquent

  2. Jak mogę uzyskać ostatnio wstawiony identyfikator za pomocą Hibernate?

  3. Zaktualizuj DataTable do bazy danych MySql C#

  4. Jak wstawić tablice do MySQL za pomocą Codeigniter?

  5. Odmowa dostępu dla użytkownika 'www-data'@'localhost - jak sobie z tym poradzić?