Comment obtenir toutes les dates entre deux dates en SQL

Comment obtenir toutes les dates entre deux dates en SQL

Il est nécessaire d'abord de connaître le format utilisé pour stocker la date dans la base de données. Ensuite, deux solutions sont possibles.

Les systèmes de gestion de base de données peuvent prendre en charge les dates de différentes manières. Pour effectuer une recherche sur une date, il est impératif de bien connaître le format utilisé par la base de données pour stocker la date.

Pour récupérer les dates se situant entre deux dates, les deux dates cibles doivent être écrites entre guillemets. Vous pouvez utiliser les opérateurs de comparaison ou le mot clé BETWEEN afin de raccourcir l'écriture.

#Ces 2 requêtes sont identiques
SELECT prenom, nom FROM personnes WHERE date_naissance >= 2016-01-01 AND date_naissance <= 2016-12-31
SELECT prenom, nom FROM personnes WHERE date_naissance BETWEEN 2016-01-01 AND 2016-12-31

Vous devez faire attention au format de la date dans la base de données. S'il s'agit d'un datetime et que l'heure n'est pas précisée, alors minuit sera utilisée comme heure par défaut. Dans notre exemple, une personne née le 31 décembre à 16h ne sera pas sélectionnée par la requête.

Pour résoudre le problème, vous pouvez soit indiquer l'heure, soit incrémenter la date d'un jour supplémentaire. Dans le cas de la deuxième solution, il faut utiliser les opérateurs de comparaison car avec le mot-clé BETWEEN, une personne née le 1er janvier 2017 à minuit sera incluse dans les résultats.

SELECT prenom, nom FROM personnes WHERE date_naissance BETWEEN 2016-01-01 AND 2016-12-31 23:59:59,999
SELECT prenom, nom FROM personnes WHERE date_naissance >= 2016-01-01 AND date_naissance < 2017-01-01