問題定位
在使用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小時(時區問題)