**
UTC
**
首先,介紹一下什么是UTC,UTC,簡稱世界統一時間,跟北京時間相比,比北京早8個小時,也就是說,北京2020年3月20日18點的時候,UTC時間為2020年3月20日10點
**
坑
**
如果你用編譯器連接數據庫,定義了serverTimezone=UTC,那么在你編譯器上執行的SQL語句,會先以UTC時區進行存儲,發送到MySQL,然后MySQL以本地時區進行轉換,就會導致,執行時間比從編譯器上的執行時間早8個小時,導致,同一段SQL語句,在mysql直接執行,與編譯器執行,結果不同,因為時間相差8個小時
serverTimezone=UTC
統計3月13日到3月19日的數據,Navicat運行右下角顯示有21條記錄
傳到編譯器卻顯示只有18條記錄
原因如下:
編譯器上設置的時區屬性會UTC,雖然傳往后台的時間是2020-03-13 03:17:33.408(Timestamp), 2020-03-19 03:17:33.408(Timestamp),但是在沒到達后台之前,進行了一次存儲,以UTC時區進行存儲,也就是2020-03-12 19:17:33.408(Timestamp), 2020-03-18 19:17:33.408(Timestamp),然后到達后台后,取出,進行查詢的時間段,就早了8個小時,也就只有18條記錄
解決方式
將屬性設置為
serverTimezone=Asia/Shanghai