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

Rya*_*yan 2 php mysql sql

我有一个名为表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
Run Code Online (Sandbox Code Playgroud)

谢谢

OMG*_*ies 5

使用:

  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 
Run Code Online (Sandbox Code Playgroud)

...将返回:

hr     numUploads
------------------
13:00  12200
14:00  30455
15:00  15202
16:00  61014
17:00  55104
18:00  43019
Run Code Online (Sandbox Code Playgroud)

注意事项

  • 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'
}
Run Code Online (Sandbox Code Playgroud)