2012-05-15 55 views
2

我試圖運行mysql查詢來刪除行,但面臨時區問題。我的服務器在美國,我的用戶在亞洲。在表格中輸入的時間戳是亞洲的。我可以用亞洲時間刪除行嗎?這是我的問題;用NOW()使用時區刪除行

mysql_query("DELETE FROM SMS_IN WHERE NOW() > sent_dt"); 

NOW()正在美國時間而不是亞洲時間。

回答

2

您可以使用CONVERT_TZ時間從用戶時區轉換爲服務器時區:

SELECT CONVERT_TZ(NOW(), 'user time zone', 'server time zone'); 

例如:

mysql_query("DELETE FROM SMS_IN WHERE CONVERT_TZ(NOW(), 'Asia/Hong_Kong', 'America/Montreal') > sent_dt"); 
+0

感謝魯本,但在劇本變化不大適合我的請求mysql_query(」 DELETE FROM SMS_IN WHERE CONVERT_TZ(NOW(),'America/Phoenix','Asia/Calcutta')> sent_dt「);因爲我的服務器在我們和用戶時區是亞洲...任何方式thx兄弟 – Harinder

0

您可以改變全局time_zone,或者您可以使用DATE_ADDDATE_SUBNOW()調整分離的小時數,這可能是由你知道(我希望我們所有的人着想將保持不變[DST除外])。