我有一个名为 uploads(id,file,date)
的表,其中 date
是 DATETIME
,我想显示一个统计板在我的网站上有最近 6 小时上传的内容。
类似于:
13:00 : 12,200 Uploads
14:00 : 30,455 Uploads
15:00 : 15,202 Uploads
16:00 : 61,014 Uploads
17:00 : 55,104 Uploads
18:00 : 43,019 Uploads
谢谢
最佳答案
使用:
SELECT DATE_FORMAT(u.date, '%H:00') AS hr,
COUNT(*) AS numUploads
FROM UPLOADS u
WHERE u.date >= DATE_SUB(NOW(), INTERVAL 6 HOUR)
GROUP BY DATE_FORMAT(u.date, '%H:00')
ORDER BY hr
...将返回:
hr numUploads
------------------
13:00 12200
14:00 30455
15:00 15202
16:00 61014
17:00 55104
18:00 43019
注意事项
NOW()
包括运行查询时的时间部分。这意味着,现在可能是整点过去 31 分钟,因此显示的最后一小时的值可能会发生变化。- 如果在过去六个小时范围内的整个小时内没有任何上传,则不会显示 - 您需要 LEFT JOIN 到派生时间值表才能看到零数一下。
PHP
$query = "SELECT DATE_FORMAT(u.date, '%H:00') AS hr,
COUNT(*) AS numUploads
FROM UPLOADS u
WHERE u.date >= DATE_SUB(NOW(), INTERVAL 6 HOUR)
GROUP BY DATE_FORMAT(u.date, '%H:00')"
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo $row['hr'] .' : '. NUMBER_FORMAT($row['numUploads']) .' Uploads'
}
关于php - 按小时获取统计数据,限制为最近 6 小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372321/