选择过去六小时的值

时间:2011-11-22 06:18:55

标签: php mysql timestamp

首先,该字段的日期格式为TIMESTAMP

我有一个由id,domain,hits,when组成的表。

现在,当我将命中数据插入数据库时​​,我每10分钟从我的分析API中提取一次。所以这个表的内容是

id=1, domain=test.com, hits=930, when=2011-11-22 16:00:22;

id=2, domain=test2.com, hits=134, when=2011-11-22 16:10:22;

在过去六个小时内,每隔10分钟填满一次数据,我想找到每个小时每个域的点击次数。这样:

每10小时插入一次,每小时会有6行,如何检索每小时的总点击次数?

如果我想在当前时间下午1:39提取统计数据,我应该能够在下午1:10,下午1点20分,下午1点半之前完成所有点击。

我是否需要六个单独的mysql查询,这些查询占用当前时间并且每小时运行一次因为我在图表中显示它(1小时前,2小时前,3小时前等)或者是否更简单实现这个的方法?

请帮助我理解,谢谢!

1 个答案:

答案 0 :(得分:2)

你可以尝试

select domain, date_format(when, '%Y-%m-%d %I%p') hour, sum(hits)
from table group by domain, hour

编辑:我将格式从%H 24小时改为%I%p,时间为12小时,AM / PM,因为看起来这就是你想要的。

EDIT2:如果只是你想要的最后六个小时,按照点击次数分组,你可能会更好(将date_format添加到整个小时组)

select domain, hour(timediff(date_format(now(), '%Y-%m-%d %H'), 
    date_format(when, '%Y-%m-%d %H'))) hours, sum(hits)
from table
where hours < 7
group by domain, hours