最近我遇到了一個奇怪的問題,在使用mysql數據庫時,我發現取出來的時間總是多了一天。為了解決這個問題,我進行了一番調查和研究,最終找到了解決方法。
# 查詢數據庫時間 SELECT * FROM `table` WHERE `create_time` >= '2021-08-10 00:00:00' AND `create_time`<= '2021-08-12 23:59:59'; # 結果卻多出了一天!
我在翻閱了MySQL的文檔后,發現這個問題產生的原因是時區的設置不正確。MySQL中存儲時間戳的方式是UTC時間。如果數據庫時區不是UTC時區,那么時間戳在進行轉換后就有可能出現錯誤。MySQL在存儲時間的時候,會自動把服務器的時區轉換為UTC時間存儲,而當我們查詢數據時,MySQL會再把UTC時間轉換成我們的系統時區顯示,所以就會出現誤差。
# 查詢當前時區 SELECT @@global.time_zone, @@session.time_zone; # 修改當前時區,這里設置為東八區 SET GLOBAL time_zone = "+8:00"; SET time_zone = "+8:00";
通過以上的設置,我們可以將MySQL的時區設置為與本機一致,從而解決這個時間多出一天的問題。
上一篇mysql使用語句建表
下一篇css3模板簡單