最近在使用MySQL數據庫存儲時間字段時,發現查詢的時間總是比實際時間少了14小時。經過排查,發現原來是因為我們使用的MySQL服務器位于UTC時區,而我們的項目所在的地區是UTC+8時區。
在MySQL數據庫中,DATETIME和TIMESTAMP字段都可以存儲日期和時間信息。其中,TIMESTAMP字段存儲的時間是從1970年1月1日格林威治標準時間(UTC)的午夜開始計算的秒數。而DATETIME字段則存儲一個日期和時間的組合,使用標準的日期格式:YYYY-MM-DD HH:MM:SS。
因此,當我們向這些字段存儲時間信息時,MySQL會根據服務器所在的時區進行轉換。如果我們想要正確存儲和查詢本地時間,需要先將服務器時區設置為本地時區,或者在每次查詢時將查詢結果按照本地時區進行轉換。
-- 將MySQL服務器時區設置為北京時區(UTC+8) SET GLOBAL time_zone = '+08:00'; -- 將查詢結果按照北京時區進行轉換 SELECT CONVERT_TZ('2019-10-01 12:00:00', '+00:00', '+08:00');
通過以上操作,我們可以正確地存儲和查詢本地時間,避免由于時區問題引發的錯誤。
下一篇css仿復制