php - MySQL Select 语句与convert_tz

标签 php mysql

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

它假设选择用户时区当天的任何记录,在本例中它被硬编码为 4 小时。

目前我正在使用...

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

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

最佳答案

MySQL 不会了解有关用户时区的任何信息。您需要get it使用 javascript 或可能 PHP,尽管最好的方法通常是只要求用户选择一个。在这种情况下,您可以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();

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

关于php - MySQL Select 语句与convert_tz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42281422/

相关文章:

php - mysql中的主从概念对CRM应用程序有好处吗?

php - (php) 无法从表中获取 id

php - 显示数据库中的用户记录

mysql - MariaDB,使用降级版表结构导出数据

mysql - 在 MySQL 表中存储历史价目表的最佳方式是什么?

php - ORM 的算法是什么?

php - 如何减少使用 PHP 动态生成 PDF 的时间?

php - 使用客户端证书进行身份验证

php - 比较时间戳

c# - 使用或不使用什么形式