在测试时发现插入数据库后的时间值与预期存在偏差,比实际时间慢13个小时
排查步骤:
1.因为是是远程数据库,所以首先考虑是不是服务器时间设置存在问题
和实际时间一致,该条排除
2.考虑是不是数据库时区设置问题
和实际时间一致,该条排除
3.考虑Java代码在插入数据库之前对值做了改变
在步骤1查看服务器时间时,可以看到时间后面有个CST
由上图可以知道美国中部时间和中国标准时间相差14个小时,非常接近相差的13个小时。因为当前是夏季,所以刚好是相差13个小时。
至此可以初步判断应该是Java将CST理解成了美国中部时间。
3.1 验证
在数据库连接代码中加入时区设置
jdbc:mysql://xxx.xxx.xxx.xxx/xx?serverTimezone=Hongkong
经过测试,发现问题得以解决。