Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:trova le date mancanti tra un intervallo di date

Questa è una seconda risposta, la posterò separatamente.

SELECT DATE(r1.reportdate) + INTERVAL 1 DAY AS missing_date
FROM Reports r1
LEFT OUTER JOIN Reports r2 ON DATE(r1.reportdate) = DATE(r2.reportdate) - INTERVAL 1 DAY
WHERE r1.reportdate BETWEEN '2011-01-01' AND '2011-04-30' AND r2.reportdate IS NULL;

Questo è un self-join che riporta una data tale che non esiste alcuna riga con la data successiva.

Questo troverà il primo giorno in un gap, ma se mancano esecuzioni di più giorni non riporterà tutte le date nel gap.