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

參考

相關文章
相關標籤/搜索