DATETIME字段上的GROUP BY月份

Dav*_*542 7 mysql sql

我在mysql中有以下查询:

SELECT title, 
       added_on 
FROM   title 
Run Code Online (Sandbox Code Playgroud)

结果如下:

Somos Tão Jovens                        2013-10-10 16:54:10
Moulin Rouge - Amor em Vermelho         2013-10-10 16:55:03
Rocky Horror Picture Show (Legendado)   2013-10-10 16:58:30
The X-Files: I Want to Believe          2013-10-10 22:39:11
Run Code Online (Sandbox Code Playgroud)

我想得到每个月的标题数,所以结果看起来像这样:

Count               Month
42                  2013-10-01
20                  3013-09-01
Run Code Online (Sandbox Code Playgroud)

我能想到的最接近的是:

SELECT Count(*), 
       Date(timestamp) 
FROM   title 
GROUP  BY Date(timestamp) 
Run Code Online (Sandbox Code Playgroud)

但这只是按天分组,而不是按月分组.我将如何按月分组?

Jas*_*Heo 31

你能试试吗?

select count(*), DATE_FORMAT(timestamp, "%Y-%m-01")
from title
group by DATE_FORMAT(timestamp, "%Y-%m-01")
Run Code Online (Sandbox Code Playgroud)

请注意,MONTH()无法区分"2013-01-01"和"2014-01-01"如下.

mysql> SELECT MONTH('2013-01-01'), MONTH('2014-01-01');
+---------------------+---------------------+
| MONTH('2013-01-01') | MONTH('2014-01-01') |
+---------------------+---------------------+
|                   1 |                   1 |
+---------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

  • 如果命名为“ DATE_FORMAT”,则不必在“分组依据”部分中进行重复,例如“ SELECT count(*),DATE_FORMAT(timestamp,“%Y-%m-01”))。按月分组 (4认同)