mybatis 取出时间与mysql数据库储存的不一致

工作中发现同一条SQL在数据库和程序中查询,时间字段相差约13小时。经了解,当数据库时区设置为CST时会出现此情况,Java与MySQL协商会话时区存在误解。解决方式有通过SQL语句更改数据库时区,或直接更改my.cnf配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在工作中遇到同样的一条sql在数据库查询和在程序中查询,查出的时间字段居然不一样!差了大概13个小时的样子,觉得很神奇,百度一番后了解到,当数据库的时区设置为CST时,会出现这样的情况,因为在与 MySQL 协商会话时区时,Java 会误以为是 CST -0500,而非 CST +0800。而mysql认为在CST +0800时区,最终导致了大概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使新时区生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值