MySQL使用convert_tz选择语句

时间:2017-02-16 17:59:34

标签: php mysql

我正在尝试更改select语句以考虑用户本地时区,但我无法绕过它。

假设在用户时区中选择当天的任何记录,在这种情况下,它被硬编码为4小时。

目前我正在使用......

SELECT * FROM {$this->burnsTable} WHERE DATE(created) = DATE(NOW() - INTERVAL 4 HOUR)

我想改变该语句以使用convert_tz,这可能吗?

1 个答案:

答案 0 :(得分:0)

MySQL并不了解您的用户的任何信息。时区。您需要get it使用javascript或潜在的 PHP,但最好的方法通常是让用户选择一个。在这种情况下,您可以store their choice in the database,然后MySQL 可以知道他们的时区。然后,您可以使用convert_tz(或者只是填充您为ADDTIME调用提供的偏移量)。如果您使用time zone strings设置数据库,那么您可以存储这些数据库并将其与convert_tz一起使用,或者您仍然可以通过执行类似convert_tz p>

SELECT * FROM {$this->burnsTable} WHERE DATE(CONVERT_TZ(created,'+00:00','+4:00')) = CURDATE();

您可以加入users表来执行此操作,但不要在可能有很多查询的情况下执行此操作,将时区存储在PHP用户模型中可能更好,然后只需传递适当的偏移量每次都要查找它。