天天看點

mysql中的CST時區問題

轉載位址:https://www.cnblogs.com/jiading/articles/12383072.html

在項目操作過程發現了一個時區的問題,問題現象為sql列印的時間和資料庫裡面存儲的時間不一樣。後來發現問題原因為mysql的時區為CST。網上搜尋了下CST時區,才發現這個時區已經被诟病已久。它居然能夠表示四種時區,分别為:

1.美國中部時間 Central Standard Time (USA) UTC-06:00

2.澳洲中部時間 Central Standard Time (Australia) UTC+09:30

3.中國标準時 China Standard Time UTC+08:00

4.古巴标準時 Cuba Standard Time UTC-04:00

由于CST存在歧義,是以導緻java通過jdbc去擷取時區的時候,就會出現問題,通常會把CST解析為GTM+3時區。

這個時候,通常有兩個解決辦法:

1.修改mysql的設定,把mysql的時區設定為UTC或+8:00

修改mysql的時區也有兩種方式

1)通過用戶端連接配接mysql,通過指令設定時區

可以先檢視目前時區:show variables like '%time_zone%';

确認時區為CST後再進行修改:set time_zone='+8:00';

2)修改my.cnf檔案,再mysqld設定項下添加default-zone-time='+8:00'

2.修改jdbc連接配接設定,直接把連接配接的時區固定死,繞開mysql本身的時區。

就是在jdbc連接配接配置上添加以下兩個配置即可:

useTimezone=true&serverTimezone=GMT%2B8

分别為啟用時區設定和設定連接配接服務的時區。

此時,jdbc操作都會使用自定義時區去進行時間處理。