问题:前段时间新建java工程执行保存数据业务时,数据库实际存储createdTime字段的时间和当前的时间有出入.
解决方法
1.修改配置文件中的数据库连接:
url: jdbc:mysql://192.168.0.1:3306/mysqlName?autoReconnect=true&useSSL=false&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
开始的时候,没有写serverTimezone=Asia/Shanghai,导致预想存储的数据和数据库数据相差8小时。
2.修改MySql数据库的默认时区
# 查看mysql系统时间
select now();
# 查看数据库时区
show variables like '%time_zone%';
# 设置时区更改为东八区
set global time_zone = '+8:00';
# 刷新权限
flush privileges;
# 退出后重新登录,即可。
# 永久修改MySQL时区---修改mysql的my.cnf文件
cd /etc
vim my.cnf
# 在mysqld下边的配置中添加一行:
default-time_zone = '+8:00'
# 然后重启mysql
service mysql restart
MySql数据库创建后,默认的时区比东八区少了八个小时。如果Sql语句中使用到MySql的时间的话就会比正常时间少了八个小时。所以需要修改MySql的系统时区,使其显示的时间和我们现在的时间一致。