簡體   English   中英

獲取過去1小時,過去2小時…過去n小時的記錄

[英]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

SQL字段

我猜您唯一需要做的更改就是將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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM