mybatis-取出时间与mysql数据库储存的不一致
目录
mybatis 取出时间与mysql数据库储存的不一致
在工作中遇到同样的一条sql在数据库查询和在程序中查询,查出的时间字段居然不一样!差了大概13个小时的样子,觉得很神奇,百度一番后了解到,当数据库的时区设置为CST时,会出现这样的情况,因为在与 MySQL 协商会话时区时,Java 会误以为是
CST -0500
,而非
CST +08:00
。而mysql认为在
CST +08:00时区,最终导致了大概13个小时的差距。
解决方式:
1、通过sql语句更改数据库时区
SET GLOBAL time_zone = '+8:00';#修改mysql全局时区为北京时间,即我们所在的东8区
SET time_zone = '+8:00';#修改当前会话时区
FLUSH PRIVILEGES;#立即生效
2、直接更改my.cnf配置文件
# vim /etc/my.cnf ##在[mysqld]区域中加上
default-time_zone = '+8:00'
# /etc/init.d/mysqld restart ##重启mysql使新时区生效