我有一個日期時間列creation_date
。 當即時通訊使用SET時區它仍然顯示相同的結果。 我在做什麼錯?在MySQL中設置時區不工作在日期時間?
我的代碼:
SET time_zone = "America/Los_Angeles";
SELECT * FROM `enswitch_mobile_users` WHERE `creation_date` > '2013-06-02 00:00:00';
我有一個日期時間列creation_date
。 當即時通訊使用SET時區它仍然顯示相同的結果。 我在做什麼錯?在MySQL中設置時區不工作在日期時間?
我的代碼:
SET time_zone = "America/Los_Angeles";
SELECT * FROM `enswitch_mobile_users` WHERE `creation_date` > '2013-06-02 00:00:00';
datetime
MySQL數據類型並不關心time_zone
指令。只有timestamp
沒有
所以解決方案 - 類型更改爲timestamp
您可以在MySQL documentation on date and time types找到這樣的:
MySQL的TIMESTAMP值從當前時區爲UTC轉換爲 存儲和從UTC返回到當前時區以供檢索。 (這不會發生對其他類型,比如DATETIME。)
就個人而言,我會堅持DATETIME
和總是使用UTC_TIMESTMP()
,而不是NOW()
或相似。然後,當從數據庫中讀取日期時,可以根據需要使用CONVERT_TZ()
進行轉換。
它會影響這個colum數據嗎?我的意思是如果即時通訊從日期時間改爲時間戳。它安全嗎?因爲我在這張表裏有很多記錄。我不能讓自己失去'creation_date'時間 – DanR
我會說這是安全的,但如果你不信任我 - 只需創建另一列並使用'UPDATE table SET newcol = oldcol' – zerkms