我正在尝试更改select语句以考虑用户本地时区,但我无法绕过它。
假设在用户时区中选择当天的任何记录,在这种情况下,它被硬编码为4小时。
目前我正在使用......
SELECT * FROM {$this->burnsTable} WHERE DATE(created) = DATE(NOW() - INTERVAL 4 HOUR)
我想改变该语句以使用convert_tz
,这可能吗?
答案 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用户模型中可能更好,然后只需传递适当的偏移量每次都要查找它。