Anda benar — SQL tidak memudahkan untuk mengidentifikasi data yang hilang. Teknik yang biasa digunakan adalah menggabungkan urutan Anda (dengan celah) terhadap urutan yang lengkap, dan memilih elemen-elemen tersebut dalam urutan terakhir tanpa pasangan yang sesuai dalam data Anda.
Jadi, saran @BenHoffstein mempertahankan tabel tanggal permanen adalah hal yang baik.
Singkatnya, Anda dapat secara dinamis membuat rentang tanggal tersebut dengan tabel bilangan bulat
. Dengan asumsi integers
tabel memiliki kolom i
dengan angka minimal 0 – 13, dan tabel Anda memiliki kolom tanggal bernama 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;