使用时区使用NOW()删除行

时间:2012-05-15 12:12:39

标签: php mysql

我正在尝试运行mysql查询来删除行,但面临时区问题。我的服务器在美国,我的用户在亚洲。在表格中输入的时间戳是亚洲人。我可以删除亚洲时间的行吗?这是我的询问;

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

NOW()正在占用美国时间而不是亚洲时间。

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

您可以更改全局time_zone,也可以在DATE_ADD上使用DATE_SUBNOW()来调整分离的小时数,这可能是你(我希望我们所有人都能保持不变[DST除外])。