【发布时间】:2021-07-09 14:59:12
【问题描述】:
我正在使用 Spring Data JPA 将日期时间值存储在 MySQL 表列中。但它的表现真的很奇怪。当我创建应该存储的实体时,我有用于创建日期和时间的 LocalDateTime 字段,该字段是通过 LocalDateTime.now() 设置的。当我调试代码并查看运行中的代码时,LocalDateTime 字段被实例化为正确的日期和时间。但是由于某种原因,当实体存储在 MySQL 数据库中时,时间被设置为过去的两个小时。如果时间是下午 4 点,它会在数据库表中设置为下午 2 点。但是,当我再次使用我的 jpa 存储库读取数据库中的值时,它再次被提前 2 小时推送,尽管它以 tho 小时偏移量存储。所以这有点像两个错误就是一个正确......我猜?怎么会这样?这看起来很疯狂,而且……不合逻辑。如果这很重要,那就是本地发展。
【问题讨论】:
-
尝试检索那个“错误”的值(在春天)。如果检索到的值是实际的日期和时间,那么是您的数据库在进行时区转换。
-
使用更新的 JDBC 驱动程序 (≥8.0.22) 应该可以解决问题。详情请见bugs.mysql.com/bug.php?id=93444。
标签: mysql spring database jpa localdatetime