我們在用Mysql抽取數據時候,經常需要按照天、周、月等不同的粒度對數據進行分組統計。而我們的時間可能是“2017/12/5 0:0:0”這種准確的時間。所以在進行分組之前我們需要對時間進行一下處理。
DATE_FORMAT是MySQL內置的一個函數,作用是以不同的格式顯示日期/時間數據。具體的語法如下:
DATE_FORMAT(date,format),其中
date:合法的日期。format:規定日期/時間的輸出格式,其中format可使用的格式見文末鏈接。
下面我們通過具體例子來看如何通過DATE_FORMAT進行分組統計:
下表兩列分別代表產品買出的准確時間(精確到秒),和買出的產品類型。
start_time product_no
2017/12/1 00:00:11 2A
2017/12/3 07:51:11 3C
2017/12/3 07:59:25 3C
2017/12/5 15:40:45 6C
現在我們需要對每天,每周,每月各個產品的銷量進行統計,
1)按天統計:
select DATE_FORMAT(start_time,'%Y%m%d') days,count(product_no) count from test group by days;
2)按周統計:
select DATE_FORMAT(start_time,'%Y%u') weeks,count(product_no) count from test group by weeks;
3)按月統計:
select DATE_FORMAT(start_time,'%Y%m') months,count(product_no) count from test group bymonths;
