在測試時發現插入數據庫后的時間值與預期存在偏差,比實際時間慢13個小時
排查步驟:
1.因為是是遠程數據庫,所以首先考慮是不是服務器時間設置存在問題
和實際時間一致,該條排除
2.考慮是不是數據庫時區設置問題
和實際時間一致,該條排除
3.考慮Java代碼在插入數據庫之前對值做了改變
在步驟1查看服務器時間時,可以看到時間后面有個CST
由上圖可以知道美國中部時間和中國標准時間相差14個小時,非常接近相差的13個小時。因為當前是夏季,所以剛好是相差13個小時。
至此可以初步判斷應該是Java將CST理解成了美國中部時間。
3.1 驗證
在數據庫連接代碼中加入時區設置
jdbc:mysql://xxx.xxx.xxx.xxx/xx?serverTimezone=Hongkong
經過測試,發現問題得以解決。