Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête SQL qui renvoie toutes les dates non utilisées dans une table

Vous avez raison, SQL ne facilite pas l'identification des données manquantes. La technique habituelle consiste à joindre votre séquence (avec des lacunes) à une séquence complète, et à sélectionner ces éléments dans cette dernière séquence sans partenaire correspondant dans vos données.

Donc, la suggestion de @BenHoffstein maintenir une table de dates permanente est une bonne idée.

En dehors de cela, vous pouvez créer dynamiquement cette plage de dates avec un tableau d'entiers . En supposant les integers la table a une colonne i avec des nombres au moins compris entre 0 et 13, et que votre table a sa colonne de date nommée 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;