Spring连接Mysql时遇到的TimeZone的问题


我的Mysql版本是 8.0.18

使用的Driver是 com.mysql.cj.jdbc.Driver

当我们连接时没有指定时区,mysql会使用设置中time_zone所设置的时区,这个值默认是SYSTEM,也就是指向system_time_zone这个变量,在中国,这个值显示是CST

mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+

CST可以代表四个时区!!这是一个有歧义的名字!坏就坏在这里了。java会以为这个CST是美国中部时间 (Central Standard Time )。这样就导致了JDBC获取TimeStamp时的时区出错!。

解决方法有两种:

  1. 连接时指定时区,加参数serverTimezone=Aisa/Shanghai
  2. 改mysql变量,从SYSTEM改为+08:00,方法是set global time_zone = '+08:00';

相关文章: https://www.cnblogs.com/bgo-tech/p/6929701.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM