MySQL: Find Missing Dates Between a Date Range

后端 未结 5 602
天命终不由人
天命终不由人 2020-12-06 13:57

I need some help with a mysql query. I\'ve got db table that has data from Jan 1, 2011 thru April 30, 2011. There should be a record for each date. I need to find out whethe

5条回答
  •  猫巷女王i
    2020-12-06 14:39

    Try this

    SELECT DATE(t1.datefield) + INTERVAL 1 DAY AS missing_date FROM table t1 LEFT OUTER JOIN table t2 ON DATE(t1.datefield) = DATE(t2.datefield) - INTERVAL 1 DAY WHERE DATE(t1.datefield) BETWEEN '2020-01-01' AND '2020-01-31' AND DATE(t2.datefield) IS NULL;
    

    If you want to get missing dates in a datetime field use this.

    SELECT CAST(t1.datetime_field  as DATE) + INTERVAL 1 DAY AS missing_date FROM table t1 LEFT OUTER JOIN table t2 ON CAST(t1.datetime_field  as DATE) = CAST(t2.datetime_field  as DATE) - INTERVAL 1 DAY WHERE CAST(t1.datetime_field  as DATE) BETWEEN '2020-01-01' AND '2020-07-31' AND CAST(t2.datetime_field  as DATE) IS NULL;
    

提交回复
热议问题