我们现在正在将 Spring Boot 应用程序的 MySQL Connector/J 从版本 5 更新到 8(我们实际上正在将 Spring Boot 版本从 2.0 更新到 2.1,但我认为这与我们的问题无关)。
升级连接器后(数据库保持不变:MySQL 5.7),我们发现DATETIME
存储在数据库中的所有值都因服务器和客户端之间的时区差异(UTC 和 UTC+1)而发生变化。例如,如果我们尝试读取2019-01-01 02:17:00
我们正在获取的值2019-01-01 03:17:00
。
我们知道新的连接器是使时间偏移的连接器,但我们需要我们的日期与时区无关。根据MySQL 5.7的文档,它看起来像是DATETIME
要走的路:
MySQL 将 TIMESTAMP 值从当前时区转换为 UTC 进行存储,并从 UTC 转换回当前时区进行检索。(这不会发生在其他类型中,例如
DATETIME
.)
我们现在唯一能做的就是将连接器降级到以前的版本,或者将所有DATETIME
列更改为BIGINT
.
有没有办法在 MySQL 中存储没有任何时区自动转换的日期和时间?