项目中 用到了以下两个字段,分别是插入数据时间和更新数据时间,用的mybatis-plus自动填充,结果发现填充的时间跟真实时间相差很多。查了一些资料,找到了解决方案:
1. 下图是我的mysql没有进行配置之前的时区配置,这里的CST包括了4个时区,分别是
- 美国中部时间 Central Standard Time (USA) UTC-06:00
- 澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30
- 中国标准时 China Standard Time UTC+08:00
- 古巴标准时 Cuba Standard Time UTC-04:00
这导致JDBC在跟mysql交互的时候,会误以为mysql的时区不是中国标准时区,而是上面3个中的一个。
所以,我们需要修改mysql的配置,强制它为中国标准时间,而不是其他。
- mysql> set global time_zone='+08:00';
- mysql> set time_zone='+08:00';
- mysql> flush privileges;
2. 查看本机的jdbc连接,把serverTimezone设置成下图代码