1.问题:在一个新项目中用到了新版的mysql jdbc 驱动后,发现保存到数据库的时间出现了时差
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
复制代码
结果发现保存到服务器的时间出现了问题.
2.解决方案:
** 方法一:修改数据库时区: (不推荐)**
show variables like “%time_zone%”;
±-----------------±-------+
| Variable_name | Value |
±-----------------±-------+
| system_time_zone | CST |
| time_zone | SYSTEM |
±-----------------±-------+
1.1 修改my.cnf文件 添加
default-time_zone = '+8:00
复制代码
1.2 命令方式
修改mysql全局时区为北京时间,即我们所在的东8区
set global time_zone = ‘+8:00’;
修改当前会话时区
set time_zone = ‘+8:00’;
flush privileges;
修改完毕后
±-----------------±-------+
| Variable_name | Value |
±-----------------±-------+
| system_time_zone | CST |
| time_zone | +08:00 |
±-----------------±-------+
方法二:在jdbc 的url中添加时区信息(推荐)
jdbc:mysql://xxx.xxx.xxx.xxx/foo_db?autoReconnect=true&autoCommit=false&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
我们是北京时区也就是东八区
//北京时间东八区
serverTimezone=GMT%2B8
//或者使用上海时间
serverTimezone=Asia/Shanghai