1

我将活动条目存储在 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,有这样的事情吗?

4

1 回答 1

2

有一个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);
于 2010-04-16T15:42:57.580 回答