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