Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta SQL que retorna todas as datas não utilizadas em uma tabela


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;