sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Hitta saknade datum mellan ett datumintervall

Detta är ett andra svar, jag lägger upp det separat.

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;

Detta är en självanslutning som rapporterar ett datum så att det inte finns någon rad med följande datum.

Detta kommer att hitta den första dagen i en lucka, men om det saknas körningar av flera dagar kommer det inte att rapportera alla datum i luckan.



  1. MySQL skapar syntax för lagrad procedur med avgränsare

  2. Anrop till en medlemsfunktion execute() på boolean in

  3. Hur man distribuerar MariaDB Cluster 10.5 för hög tillgänglighet

  4. Kunskap om att återställa raderade poster i SQL Server