mysql - 如何在 MySQL 中获取最后一小时的#entries,更正时区?

标签 mysql timezone gmt

我将事件条目存储在 MySQL 表中。该表有一个时间戳类型的 date_created 字段,我通过 PHP 插入基于 GMT 的事件条目:

$timestamp = gmdate("Y-m-d H:i:s", time());

这很好用。在我的客户上,我使用的是 GMT+2。如果这里是 16:00,我插入一个条目,它在 MySQL 中存储为 14:00。我猜这是预期的。我的

现在我想从 MySQL 中获取最近一小时内的事件条目数。我正在使用以下查询:

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 HOUR)

这不会返回任何内容,因为 CURRENT_TIMESTAMP 使用 MySQL 时区设置,设置为 SYSTEM,设置为 GMT+2。我想我要找的是 MySQL 中的 GMT_CURRENTTIMESTAMP,有这样的东西吗?

最佳答案

UTC_TIMESTAMP()函数,它以上下文相关的方式返回当前的 UTC 时间戳。您可以使用它代替 CURRENT_TIMESTAMP:

SELECT COUNT(id) as cnt FROM karmalog WHERE user_id = ' 89' AND event='IMG_UPD' 
AND date_created > DATE_SUB(UTC_TIMESTAMP(), INTERVAL 1 HOUR);

关于mysql - 如何在 MySQL 中获取最后一小时的#entries,更正时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2654191/

相关文章:

MySQL 同一列在 2 个不同日期之间的最大差异

mysql - 多master-master innodb集群保证什么样的一致性保证?

mysql - 如何计算mysql触发器内的两个变量?

mysql - 如何查找开始日期在特定天数内每个用户的收入数量

php - CURTIME() 获取服务器时间而不是 php.ini 中指定的时区

oracle - 如何将 "GMT+5.5_(INDIA) "转换为时区区域 "Asia/Kolkata"

datetime - 在哪里进行转换 - 时区、计量单位等

java - 解析 LDAP 日期和时间戳时设置的时区与 GMT 不一致

perl - 如何在 Perl 中转换时区?

ios - 在 Swift 中将日期从 GMT+1 转换为 UTC 时出现混淆