2013-06-02 84 views
2

我有一個日期時間列creation_date。 當即時通訊使用SET時區它仍然顯示相同的結果。 我在做什麼錯?在MySQL中設置時區不工作在日期時間?

我的代碼:

SET time_zone = "America/Los_Angeles"; 
SELECT * FROM `enswitch_mobile_users` WHERE `creation_date` > '2013-06-02 00:00:00'; 

回答

1

datetime MySQL數據類型並不關心time_zone指令。只有timestamp沒有

所以解決方案 - 類型更改爲timestamp

+0

它會影響這個colum數據嗎?我的意思是如果即時通訊從日期時間改爲時間戳。它安全嗎?因爲我在這張表裏有很多記錄。我不能讓自己失去'creation_date'時間 – DanR

+1

我會說這是安全的,但如果你不信任我 - 只需創建另一列並使用'UPDATE table SET newcol = oldcol' – zerkms

0

您可以在MySQL documentation on date and time types找到這樣的:

MySQL的TIMESTAMP值從當前時區爲UTC轉換爲 存儲和從UTC返回到當前時區以供檢索。 (這不會發生對其他類型,比如DATETIME。)

3

就個人而言,我會堅持DATETIME和總是使用UTC_TIMESTMP(),而不是NOW()或相似。然後,當從數據庫中讀取日期時,可以根據需要使用CONVERT_TZ()進行轉換。

+0

因此,不要一次性完成你更願意在**每個**單個查詢中手動關心它? – zerkms

+0

如果您正在經營一個國際網站,則無論如何您必須這樣做。如果你不這樣做,你通常不必關心時區。 – str

+0

如果你使用時間戳 - 你只需在連接後指定'SET time_zone'並且其他所有操作都是由mysql自動完成的,所以「你必須這樣做」並不完全正確 – zerkms

相關問題