mysql中时间数据差14小时

问题

调试代码中,肯定了new Date();出来的时间数据是准确了,没有出现差14小时状况,经过Spring hibernate jdbc这一路保存到mysql数据库中,就出现了14小时问题。html

排查

mysql排查

# 查看mysql时区
mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | +08:00              |
+--------------------+---------------------+
# 东八区,没有问题的
# 主动查询当前时间
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2018-12-18 17:11:05 |
+---------------------+
1 row in set (0.00 sec)
# 没有问题,时间与当前时间是一致的。

到这里,基本上排除了是mysql数据库时区不对的问题,以前在代码中debug,也没有发现是代码中的问题。到这里,只有尝试在jdbc中主动设置东八区。以前就出现过spring boot中jackson时间格式和东八区的设置问题,会不会spring的jdbc也是须要设置东八区类?mysql

解决

jdbc时区

只须要中添加&serverTimezone=GMT%2B8设置jdbc时区为东八区就能够了,GMT+8表示东八区,当jdbc只能认识GMT%2B8写法。例如:spring

spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8

参考

相关文章
相关标签/搜索