Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :trouver les dates manquantes entre une plage de dates

Ceci est une deuxième réponse, je la publierai séparément.

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;

Il s'agit d'une auto-jointure qui signale une date telle qu'aucune ligne n'existe avec la date suivante.

Cela trouvera le premier jour d'un intervalle, mais s'il manque plusieurs jours, toutes les dates de l'intervalle ne seront pas signalées.