【问题标题】:MySQL Select Statement with convert_tz带有 convert_tz 的 MySQL 选择语句
【发布时间】:2017-07-06 00:07:40
【问题描述】:

我正在尝试更改选择语句以考虑用户本地时区,但我无法理解它。

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

目前我正在使用...

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

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

【问题讨论】:

    标签: php mysql


    【解决方案1】:

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

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

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

    【讨论】:

    • 抱歉,我没有把那部分说清楚,我知道他们的时区。更多的是关于从当前日期选择记录的能力,以及他们自己的时区。这看起来像我需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-26
    相关资源
    最近更新 更多