Máte pravdu – SQL neusnadňuje identifikaci chybějících dat. Obvyklou technikou je spojit vaši sekvenci (s mezerami) k úplné sekvenci a vybrat tyto prvky v druhé sekvenci bez odpovídajícího partnera ve vašich datech.
Takže, návrh @BenHoffstein udržovat stálou tabulku datumů je dobré.
Kromě toho můžete toto časové období dynamicky vytvořit pomocí tabulka celých čísel
. Za předpokladu integers
tabulka má sloupec i
s čísly alespoň 0 – 13 a že tabulka má sloupec data s názvem datestamp
:
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;