[英]Mysql Group By 24 hour intervals
如何將表Test的記錄按時間間隔分組,從每天的19:00開始到第二天的18:59結束?
表:測試
id creation_date name
1 2014-01-01 17:52:27 a
2 2014-01-01 18:50:00 b
3 2014-01-01 19:00:00 c
4 2014-01-03 18:59:00 e
5 2014-01-03 12:00:00 f
期望的結果是:
Interval Number of Occurrences
2013-31-31 19:00:00 - 2014-01-01 18:59:59 2
2014-01-01 19:00:00 - 2014-01-02 18:59:59 1
2014-01-02 19:00:00 - 2014-01-03 18:59:59 1
2014-01-03 19:00:00 - 2014-01-04 18:59:59 1
嘗試這個:
SELECT MIN(creation_date), MAX(creation_date), COUNT(*) AS Occurrences
FROM test
GROUP BY DATE(DATE_SUB(creation_date, INTERVAL 19 HOUR))
工作演示: http : //sqlfiddle.com/#!2/aa7583/6
對於格式部分,請使用以下命令:
SELECT CONCAT( CONCAT(DATE(DATE_SUB(creation_date, INTERVAL 19 HOUR)),' 19:00:00') , ' - ' , CONCAT(DATE(DATE_ADD(creation_date, INTERVAL 5 HOUR)), ' 18:59:00') ) AS Interval, COUNT(*) AS Occurrences
FROM test
GROUP BY DATE(DATE_SUB(creation_date, INTERVAL 19 HOUR))
怎么樣:
select count( distinct( q0.made_date )) from
(
select (date_sub( cast( concat( creation_date, " ", name ) as datetime )), -19, HOUR ) as made_date )
) as q0
(沒有嘗試過,但想法是將日期歸一化為午夜,然后按日期分組)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.