往数据库里插入时间数据时,时间自动减少了14h

问题描述:

使用springmvc作为框架,往数据库里插入(更新)数据时,发现时间格式的数据自动减少了14小时。

比如:我INSERT INTO test_table (id, name, birthday) VALUES(1, 'chen', '2017-12-12 15:00:00')

通过代码插入到数据库后,发现birthday字段的时间并不是'2017-12-12 15:00:00',而是'2017-12-12  01:00:00'。

(注:在MySQL中直接执行:INSERT INTO test_table (id, name, birthday) VALUES(1, 'chen', '2017-12-12 15:00:00');是正确的)


问题解决:

碰到这个问题,我第一个直觉是时区的问题,但是不知道怎么下手,只能一个一个去尝试。

首先我先看了下服务器端的时区,date -R,显示的时区是正确的;

然后我查看了MySQL所用的时区:SHOW VARIABLES LIKE '%time_zone%'

查询结果如下:

system_time_zone CST
time_zone SYSTEM

是跟系统的时区一样的。

说明MySQL数据库本身的配置没有问题,那么就是程序本身的配置问题了。

但是我将自己的项目和先前的项目配置进行了对比,并没有发现不一样的地方。

百度过程中看到一篇博文:https://segmentfault.com/q/1010000010791397

发现我和他发生的情况一样,我使用的也是新版6.0驱动,但是我的MySQL的版本是5.5.52-MariaDB。

我原先的配置如下:

driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://192.168.164.129\:3306/test?useSSL\=false&useUnicode\=true&characterEncoding\=utf8&autoReconnect\=true

然后在路径后面添加了&serverTimezone\=Hongkong

修改后如下:

driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://192.168.164.129\:3306/test?useSSL\=false&useUnicode\=true&characterEncoding\=utf8&autoReconnect\=true&serverTimezone\=Hongkong

重新测试代码,发现以上bug解决了。


参考的其它博文:http://blog.csdn.net/qq631431929/article/details/51731834

时区简绍:http://blog.sina.com.cn/s/blog_a72ec20c0101jgxd.html


猜你喜欢

转载自blog.csdn.net/h996666/article/details/78782423