我将事件条目存储在 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/