php - 按小时获取统计数据,限制为最近 6 小时

标签 php sql mysql

我有一个名为 uploads(id,file,date) 的表,其中 dateDATETIME,我想显示一个统计板在我的网站上有最近 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/

相关文章:

mysql - 根据ID选择用户投票栏

mysql - 提取未贡献的成员(member)

mysql - 如何检查一条记录是否已经存在于sql表中?

php - 将 MySQL 数据从旧 PHP 应用程序迁移到 Rails 应用程序

php - 有没有办法在删除行之前检查 MySql 中的约束违规情况?

php - HTTP header 中使用的日期/时间格式

mysql - 在mysql工作台中正向工程ER图时出现错误1064

php - OOP 选择查询可以工作,但不确定如何处理结果

sql - Postgresql 使用 tsearch2 为两列 ts_vector 创建 TRIGGER

mysql - SQL 验证具有相同列的列