mysql中的CST時區問題


在項目操作過程發現了一個時區的問題,問題現象為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操作都會使用自定義時區去進行時間處理。


免責聲明!

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



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