sql >> Base de Datos >  >> RDS >> Mysql

MySQL:encontrar fechas faltantes entre un rango de fechas

Esta es una segunda respuesta, la publicaré por separado.

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;

Esta es una autounión que informa una fecha tal que no existe ninguna fila con la fecha siguiente.

Esto encontrará el primer día en un intervalo, pero si faltan series de varios días, no informará todas las fechas en el intervalo.