Spring連接Mysql時遇到的TimeZone的問題


我的Mysql版本是 8.0.18

使用的Driver是 com.mysql.cj.jdbc.Driver

當我們連接時沒有指定時區,mysql會使用設置中time_zone所設置的時區,這個值默認是SYSTEM,也就是指向system_time_zone這個變量,在中國,這個值顯示是CST

mysql> show variables like "%time_zone%";
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+

CST可以代表四個時區!!這是一個有歧義的名字!壞就壞在這里了。java會以為這個CST是美國中部時間 (Central Standard Time )。這樣就導致了JDBC獲取TimeStamp時的時區出錯!。

解決方法有兩種:

  1. 連接時指定時區,加參數serverTimezone=Aisa/Shanghai
  2. 改mysql變量,從SYSTEM改為+08:00,方法是set global time_zone = '+08:00';

相關文章: https://www.cnblogs.com/bgo-tech/p/6929701.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM