Sie haben Recht – SQL macht es nicht einfach, fehlende Daten zu identifizieren. Die übliche Technik besteht darin, Ihre Sequenz (mit Lücken) mit einer vollständigen Sequenz zu verbinden und diese Elemente in der letzteren Sequenz ohne einen entsprechenden Partner in Ihren Daten auszuwählen.
Also @BenHoffsteins Vorschlag eine permanente Datumstabelle zu führen ist eine gute Sache.
Abgesehen davon können Sie diesen Datumsbereich dynamisch mit einem Ganzzahltabelle
. Angenommen die integers
Tabelle hat eine Spalte i
mit Zahlen von mindestens 0 – 13, und dass Ihre Tabelle eine Datumsspalte mit dem Namen datestamp
hat :
SELECT candidate_date AS missing
FROM (SELECT CURRENT_DATE + INTERVAL i DAY AS candidate_date
FROM integers
WHERE i < 14) AS next_two_weeks
LEFT JOIN my_table ON candidate_date = datestamp
WHERE datestamp is NULL;