【发布时间】:2019-12-27 00:52:05
【问题描述】:
我正在尝试在 MySql 表名人员和列名 regdate 中插入一个日期值,数据类型 = datetime。我正在设置一个值,例如'2019-08-21 20:25:20' 但在保存 +5:30 小时后会添加,并且存储的值是 '2019-08-22 03:55:20'。使用下面的 Java 代码生成日期值
Timestamp curDate = Timestamp.valueOf(Instant.now().atZone(ZoneId.of("Asia/Kolkata")).toLocalDateTime());
然后在 INSERT 查询中使用.setTimestamp(1, curdate);。
我已检查 MySql 的时区是否设置为 IST (GMT+0530)。应用服务器时区也设置为 IST。但即使我明确设置日期值,我也无法理解为什么要添加 +5:30 小时。
我尝试将连接字符串中的时区设置为?serverTimezone=Asia/Kolkata,但没有成功。
但是,如果我使用连接相同 MySql 实例的本地计算机运行相同的代码,我不会遇到任何问题,并且相同的值会在不增加 5:30 小时的情况下被存储。我检查了 App Server 时区,它是 IST。
MySql 版本 - 5.7.17-log mysql-connector-java - 8.0.15
我错过了什么吗?
【问题讨论】: