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

时间:2010-04-16 15:30:00

标签: mysql timezone gmt

我将活动条目存储在MySQL表中。该表有一个date_created字段,类型为timestamp,通过PHP我根据GMT插入活动条目:

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

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

现在我想在过去一小时内获取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,有这样的事吗?

1 个答案:

答案 0 :(得分: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);