Прав сте — SQL не улеснява идентифицирането на липсващи данни. Обичайната техника е да присъедините вашата последователност (с пропуски) срещу пълна последователност и да изберете тези елементи в последната последователност без съответен партньор във вашите данни.
И така, предложение на @BenHoffstein поддържането на постоянна таблица с дати е добре.
С изключение на това, можете динамично да създадете този период от време с таблица с цели числа
. Приемайки integers
таблицата има колона i
с числа най-малко 0 – 13 и че вашата таблица има колона за дата с име 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;