[英]Get records of last hour, last 2 hours…last n hours
我需要獲取最近24小時的記錄,但不需要按小時分組:
SELECT HOUR(CompDate) AS hour, COUNT(1) AS action
FROM mytable
WHERE ((CompDate >= DATE_SUB(NOW(), INTERVAL 24 HOUR))
GROUP BY `hour`;
上面的查詢將告訴我:22小時-> 6個動作,21小時-> 9個動作。
我想要的是:1小時前-> 5個動作,2小時前-> 3個動作,等等...
我需要2小時前,2小時前..... n小時前的操作總和
任何幫助,將不勝感激
您可以執行以下操作:
CREATE TABLE Test
(
`Id` INT,
`DateTimes` DATETIME
);
INSERT INTO Test(Id, DateTimes) VALUES (1, '2015-06-09 10:12:12'), (2, '2015-06-09 10:13:12'), (3, '2015-06-09 09:12:12'), (4, '2015-06-09 09:15:12'), (5, '2015-06-09 08:15:10')
SELECT TIMESTAMPDIFF(HOUR,NOW(),DateTimes) * -1 AS Hours,
COUNT(*) AS Action
FROM Test
GROUP BY TIMESTAMPDIFF(HOUR,NOW(),DateTimes)
輸出:
Hour Action
24 1
23 2
22 2
我猜您唯一需要做的更改就是將HOUR轉換為NOW和CompDate之間的差:
SELECT HOUR( timediff( NOW( ) , CompDate) ) AS HOUR , COUNT( 1 ) AS action
FROM mytable
WHERE CompDate > DATE_SUB( NOW( ) , INTERVAL 24 HOUR )
GROUP BY HOUR
ORDER BY HOUR
使用訂購依據和分組依據
SELECT HOUR(CompDate) AS hour, COUNT(1) AS action
FROM mytable
WHERE ((CompDate >= DATE_SUB(NOW(), INTERVAL 24 HOUR))
GROUP BY HOUR(CompDate)
ORDER BY HOUR(CompDate);
如果要在查詢本身之前添加幾個小時,請使用Concat
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.