Você está certo — o SQL não facilita a identificação de dados ausentes. A técnica usual é juntar sua sequência (com lacunas) contra uma sequência completa e selecionar esses elementos na última sequência sem um parceiro correspondente em seus dados.
Então, a sugestão de @BenHoffstein manter uma tabela de datas permanente é uma boa.
Além disso, você pode criar dinamicamente esse intervalo de datas com um tabela de inteiros . Assumindo os
integers
tabela tem uma coluna i
com números de pelo menos 0 a 13, e que sua tabela tenha sua coluna de data chamada 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;