場景:后台返回給頁面的時間統一差8小時。
分析:差八小時,應該是時區問題。具體的是哪一層出的問題呢,mybatis?mysql?系統時間?
解析:
1.查詢mysql時區(正常)
輸入show variables like "%time_zone%";
,顯示當前時區
全局參數system_time_zone
系統時區,在MySQL啟動時會檢查當前系統的時區並根據系統時區設置全局參數system_time_zone的值。
全局參數time_zone
用來設置每個連接會話的時區,默認為system時,使用全局參數system_time_zone的值。
中國標准時間=CST(China Standard Time) UT+8:00 。
mysql的時區=system_time_zone+time_zone
2.mybatis的時間出問題啦?系統時間出問題啦?
代碼debug調試,顯示代碼取的當前系統時間正常,但是寫入庫的時候就異常差了八小時。初步懷疑是mybatis的什么配置異常導致。
mybatis我找到可能影響時區的就是連接串上的配置,,嘗試將這個改為
。
運行test方法插入數據庫,時間已修正。
綜上確認問題:mybatis的連接串上的時區設置異常,導致插入日期數據時區異常
參考鏈接: