繁体   English   中英

MySQL带有select_tz的Select语句

[英]MySQL Select Statement with convert_tz

我正在尝试更改选择语句以解决用户的本地时区,但是无法解决这个问题。

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

目前我正在使用...

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

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

MySQL不会对用户的时区一无所知。 您需要使用javascript或可能的 PHP来获得它 ,尽管最好的方法通常是只要求用户选择一个。 在这种情况下,您可以将他们的选择存储在数据库中 ,然后MySQL 可以知道他们的时区。 然后,您可以使用convert_tz(或简单地填充您给ADDTIME调用提供的偏移量)。 如果您使用时区字符串设置了数据库,则可以将其存储并与convert_tz一起使用,或者仍可以通过执行类似的操作将带有偏移量的convert_tz使用

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

您可以联接到users表来执行此操作,但是与其对可能存在许多查询的状态执行此操作,最好将时区存储在PHP用户模型中,然后传递适当的偏移量而不是必须这样做每次都查一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM