在mySql中选择日期和缺少日期的行

时间:2014-10-14 08:53:41

标签: mysql datetime

我有一个表格,其中包含一个名为/ datetime的字段,可以说是一年。以下查询为我提供了这一年内所有不同的月份数:

SELECT month(datetime)
FROM foo
GROUP BY month(datetime);

所以我们假设查询返回两行,包括1月和11月。可以/我如何操纵此查询以获得缺失的月份(2月 - 10月和12月)?

1 个答案:

答案 0 :(得分:0)

你可以试试这个......不确定这是你要找的那个。

    SELECT  DISTINCT MonthName FROM 
    ( 
    SELECT  MONTHNAME(STR_TO_DATE(1, '%M')) AS MONTHNAME
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(2, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(3, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(4, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(5, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(6, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(7, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(8, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(9, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(10, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(11, '%M'))
    UNION 
    SELECT  MONTHNAME(STR_TO_DATE(12, '%M'))
    )  AS allMonths
    LEFT JOIN 
    foo ON  MONTHNAME(STR_TO_DATE(month(datetime), '%m')) = allMonths.MonthName
    WHERE foo.datetime is null