sql >> Base de Datos >  >> RDS >> Mysql

fecha hora correcta en la aplicación pero incorrecta en mysql [zona horaria]

¿Cuáles son los tipos de columnas en MySQL? Sospecho que es DATETIME. Este tipo no almacena "momento en el tiempo", almacena "hora en el reloj", por lo que puede significar un momento diferente en diferentes zonas horarias.

Cuando el controlador MySQL escribe java.util.Date en la columna DATETIME, tiene que elegir alguna zona horaria para escribir "hora en el reloj", porque el mismo java.util.Date puede significar una hora diferente en diferentes zonas horarias. Almacena la hora como en la zona horaria local del servidor MySQL.

LocalDateTime no tiene este problema, porque es como DATETIME. Representa la hora en un reloj, no el momento en el tiempo, por lo que el año/mes/día-hora/minuto/segundo simplemente se almacenan en la base de datos. El aviso en el registro de hibernación LocalDateTime se proporciona tal cual, mientras que hay una zona horaria ("CST") junto a Fecha.

En general, es una buena práctica almacenar la hora siempre en UTC, así que use DateTime, no Date ni LocalDateTime. DateTime con el convertidor jadira siempre almacena/lee DATETIME como UTC.