簡體   English   中英

Mysql Group按24小時間隔

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

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