mysql计算一个月内的不同天数

时间:2013-10-03 00:31:10

标签: mysql sql distinct

在mysql table1我有列dateofreport,每天记录很少,例如

dateofreport 
2013-05-31
2013-05-31
2013-05-30
2013-05-30
2013-05-30
2013-05-29
2013-04-31
2013-04-31
2013-04-31
2013-04-02

我想知道一个月有多少个不同的日子,
结果应该是:2013年5月:2013年4月3日:2

我可以在所有表​​中执行不同的日子:SELECT COUNT( DISTINCT dateofreport ) FROM table1或不同的月份,但我不知道如何按月分组。

SELECT DISTINCT 
DATE_FORMAT(`dateofreport`,'%Y-%M') as months 
FROM table1

3 个答案:

答案 0 :(得分:4)

SELECT EXTRACT(YEAR_MONTH FROM dateofreport) AS ym,
    COUNT(DISTINCT dateofreport) AS count
FROM table1
GROUP BY ym

我使用EXTRACT()的唯一原因是它是ANSI标准SQL,IIRC。这两种类型的函数都可能导致临时表。

答案 1 :(得分:0)

SELECT DATE_FORMAT(dateofreport, '%Y-%M') AS months,
    COUNT(DISTINCT dateofreport) AS count
FROM table1
GROUP BY months

答案 2 :(得分:0)

SELECT 
    EXTRACT(YEAR_MONTH FROM dateofreport) AS distinctmy,
    COUNT(DISTINCT DAYOFYEAR(dateofreport)) AS uniquedays 
FROM
    table1 
GROUP BY distinctmy 

输出

enter image description here