2010-04-16 25 views
1

我将活动条目存储在MySQL表中。该表有timestamp类型的DATE_CREATED领域,并通过PHP我插入基于GMT活动条目:如何获取MySQL中最后一小时的入口,修正时区?

$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时区设置,它被设置为系统,它设置为GMT + 2。我想我在找什么是MySQL中的GMT_CURRENTTIMESTAMP,有没有这样的事情?

回答

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); 
+0

这很有效,谢谢。我不知道UTC和GMT在时区方面是一回事。我想我正在寻找错误的术语。 – Ferdy 2010-04-16 15:48:58

相关问题