MyBatis中LocalDate時差的坑


問題定位

  在使用mybatis進行數據查詢時,使用到LocalDate作為參數(2018-06-18),結果查出來的數據早了一天(2018-06-17),猜測是日期的時差問題,

具體打印出一個包含時間的字段,發現,查出來的時間比數據庫中的時間晚了14小時。然后網上搜索,找到了說法(參考文章【1】):

  LocalDate為本地時區,數據庫使用的時區是CST,參考文章【2】,CST應該表示 Central Standard Time (USA) UTC-6:00

與中國時區+8 正好差了14h

經過本地驗證,確是如此,我的數據庫使用的time_zone也為CST。

解決方案

  參考文章【1】的解決方案是修改數據庫時區為中國+8時區,但是我自己這邊的數據庫是個老數據庫,不想改動那么大,

最終參考了文章【3】的方法:修改數據庫連接中的時區參數:

  使用上海時間:serverTimezone=Asia/Shanghai

  或者

  使用北京時間:serverTimezone=GMT%2B8

 

 

 

參考文章:

【1】mybatis查詢mysql的datetime類型數據時間差了14小時(時區問題)

【2】時區縮寫 UTC, CST, GMT, CEST 以及轉換

【3】mysql url 中時區問題


免責聲明!

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



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