前言
最近在项目中发现数据库某个表的createTime字段的时间比中国时间少了13个小时,只是在数据库中查看显示时间不对,但是在页面,又是正常显示中国时区的时间。
排查
项目中数据库的驱动使用的是8.0.19,驱动类使用的是com.mysql.cj.jdbc.Driver
经过查询mysql-connector-java 版本6 以上会出现默认时区不对的问题,需要在连接的url上增加时区设置,或者在mysql数据库中设置时区。
- 方法1:查看时区并且修改
show variables like "%time_zone%";
system_time_zone | CST |
| time_zone | SYSTEM |
CST 通常指代中部标准时间(Central Standard Time),是北美洲和其他一些地区的时区,与中国时间相差了13个小时。
#vim /etc/my.cnf ##在[mysqld]区域中加上
default-time_zone = ‘+8:00’
#/etc/init.d/mysqld restart ##重启mysql使新时区生效
- 方法2:项目数据库链接修改
&serverTimezone=Asia/Shanghai
或者:url中增加serverTimezone=GMT%2B8
修改后,重新启动项目生效: