Mysql
 sql >> Database >  >> RDS >> Mysql

Query SQL che restituisce tutte le date non utilizzate in una tabella

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;