Hai ragione:SQL non semplifica l'identificazione dei dati mancanti. La tecnica usuale consiste nell'unire la tua sequenza (con spazi vuoti) rispetto a una sequenza completa e selezionare quegli elementi nell'ultima sequenza senza un partner corrispondente nei tuoi dati.
Quindi, il suggerimento di @BenHoffstein mantenere una tabella di date permanente è una buona idea.
A parte questo, puoi creare dinamicamente quell'intervallo di date con un tabella dei numeri interi
. Assumendo i integers
la tabella ha una colonna i
con numeri almeno 0 – 13 e che la tua tabella abbia la colonna della data denominata 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;