Aller au contenu principal
DomicileDidacticielsSQL

Maîtriser les comparaisons de dates SQL : Comment rechercher des dates supérieures à une date spécifique ?

Apprenez à interroger et à filtrer une date supérieure à une date spécifique en SQL. Comparez les différences de logique de la date supérieure à dans MySQL, PostgreSQL et SQL Server.
Actualisé 4 oct. 2024  · 11 min lire

Pour une gestion et une analyse efficaces des bases de données, il est essentiel de savoir comment rechercher les dates supérieures à une date spécifique. Ce tutoriel fournit un guide complet pour effectuer des comparaisons de dates en SQL à travers différents systèmes de bases de données SQL, y compris SQL Server, PostgreSQL et Oracle. Qu'il s'agisse d'analyser des données historiques, d'établir des rapports ou de filtrer des enregistrements, la maîtrise de cette technique vous permettra d'améliorer vos capacités d'interrogation SQL.

À la fin de ce guide, vous serez en mesure de :

  • Comprendre les nuances des formats et des fonctions de date dans différentes bases de données SQL, y compris SQL Server, PostgreSQL et Oracle. 
  • Appliquer des exemples pratiques à des scénarios du monde réel. 

Si vous êtes un analyste de données ou un scientifique de données prêt à en apprendre davantage, je vous recommande de suivre la piste de compétences SQL Fundamentals de DataCamp pour vous familiariser avec l'interrogation de données à partir de bases de données. Vous pouvez également suivre le cours Création de bases de données PostgreSQL pour maîtriser les tenants et les aboutissants de PostgreSQL.

Introduction aux comparaisons de dates SQL

La comparaison de dates est importante en SQL car elle permet aux professionnels des données de filtrer et de trier les données au cours de l'analyse. Cette méthode est particulièrement utile pour les rapports financiers ou la gestion des stocks, qui nécessitent une analyse des tendances.

L'opérateur SQL "plus grand que" (>) est utilisé avec les dates pour comparer deux valeurs de date. Lorsque vous incluez l'opérateur "plus grand que" dans une requête SQL contenant des dates, la requête renvoie les enregistrements dont la date est postérieure à la date spécifiée. Par exemple, la requête ci-dessous renverra les lignes de la table Orders dont l'adresse OrderDate est postérieure à l'adresse 2023-01-01.

SELECT *
FROM Orders
WHERE OrderDate > '2023-01-01';

Commençons par passer rapidement en revue les opérateurs SQL de base qui peuvent être utilisés pour filtrer les données. Ces opérateurs sont également abordés dans notre aide-mémoire sur les bases du langage SQL, que vous pouvez consulter avant d'essayer les exemples ci-dessous.

Egal à (=)

L'opérateur = est utilisé en SQL pour comparer l'égalité de deux valeurs. Vous trouverez ci-dessous un exemple d'utilisation de l'opérateur avec une valeur de date. La requête SQL renverra des lignes dans la table OrdersOrderDate est égal à 2023-01-01.

-- Select all orders placed on January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate = '2023-01-01';

Non égal à (!= ou <>)

L'opérateur != ou <> vérifie deux valeurs et renvoie celles qui ne sont pas identiques à celles référencées. Par exemple, lorsqu'il est utilisé avec une valeur de date, l'opérateur != ou <> renverra des lignes qui ne sont pas identiques à la date référencée. Vous pouvez également consulter notre site SQL NOT EQUAL Operator : Guide du débutant tutoriel pour apprendre les subtilités.

-- Select all orders that were not placed on January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate != '2023-01-01';
-- Alternative syntax using <>
SELECT *
FROM Orders
WHERE OrderDate <> '2023-01-01';

Moins que (<)

L'opérateur < est utilisé en SQL pour vérifier si la valeur de gauche est plus petite que celle de droite. Lorsqu'elle est utilisée dans une requête SQL avec des valeurs de date, la requête renvoie les enregistrements dont la date est antérieure à la date spécifiée. Par exemple, la requête ci-dessous renverra les lignes de la table Orders dont l'adresse OrderDate est antérieure à 2023-01-01.

-- Select all orders placed before January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate < '2023-01-01';

Supérieur ou égal à (>=)

L'opérateur >= vérifie si les valeurs situées à gauche de l'opérateur sont supérieures ou égales à la valeur située à droite. Lorsque l'opérateur est utilisé en SQL pour interroger une valeur de date, il renvoie les enregistrements dont les valeurs de date sont seulement égales ou supérieures à la valeur à laquelle il est fait référence.

-- Select all orders placed on or after January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate >= '2023-01-01';

Inférieur ou égal à (<=)

L'opérateur <= est utilisé en SQL pour vérifier si les valeurs situées à gauche de l'opérateur sont inférieures ou égales à la valeur située à droite. Lorsque l'opérateur est utilisé pour interroger une valeur de date, il renvoie les enregistrements dont les valeurs de date sont inférieures ou égales à la valeur référencée.

-- Select all orders placed on or before January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate <= '2023-01-01';

Comparaison de dates dans SQL Server

Nous pouvons comparer des dates dans SQL Server en utilisant les opérateurs suivants : <, <=, >, >=, et =. Toutefois, nous couvrirons les points suivants :

Utilisation de l'opérateur "plus grand que" (>)

L'opérateur "supérieur à" (>) est utilisé dans SQL Server pour filtrer les dates postérieures à la date comparée du côté droit de l'opérateur. Par exemple, la requête ci-dessous filtre la table Orders et renvoie les enregistrements des commandes passées après OrderDate 2023-01-01.

-- Select all orders delivered after January 1, 2023
SELECT *
FROM Orders
WHERE DeliveryDate > '2023-01-01';

Utilisation de la fonction GETDATE()

La fonction GETDATE() du serveur SQL renvoie la date actuelle telle qu'elle est enregistrée dans le système de l'utilisateur. Vous pouvez donc utiliser cette fonction pour interroger des données et filtrer les lignes dont la date est supérieure à la date actuelle.

-- Select all orders delivered after the current date and time
SELECT *
FROM Orders
WHERE DeliveryDate > GETDATE();

Utilisation de l'option ENTRE pour les plages de dates

L'opérateur BETWEEN en SQL est utilisé pour filtrer les valeurs comprises dans un intervalle donné. Lorsqu'il est utilisé dans SQL Server avec des dates, vous pouvez filtrer les lignes contenant des dates comprises dans la date indiquée. Les résultats incluront les dates de début et de fin telles qu'elles sont écrites dans la requête.

-- Select all orders delivered between January 1, 2023, and December 31, 2023
SELECT *
FROM Orders
WHERE DeliveryDate BETWEEN '2023-01-01' AND '2023-12-31';

Utilisation de CAST et CONVERT pour les plages de dates

Vous pouvez également utiliser les fonctions CAST et CONVERT pour éviter les erreurs. Ces fonctions garantissent que les valeurs de la date sont correctement interprétées et formatées.

-- Convert a string to a date
SELECT CAST('2023-06-26' AS DATE) AS ConvertedDate;

-- Convert a string to a datetime
SELECT CAST('2023-06-26 14:30:00' AS DATETIME) AS ConvertedDateTime;
-- Convert a string to a date using CONVERT
SELECT CONVERT(DATE, '2023-06-26') AS ConvertedDate;

-- Convert a string to a datetime using CONVERT
SELECT CONVERT(DATETIME, '2023-06-26 14:30:00') AS ConvertedDateTime;

Comparaison de dates dans PostgreSQL

PostgreSQL dispose de différentes clauses utilisées pour comparer les dates. Nous en examinons quelques-unes ci-dessous.

Utilisation de l'opérateur "plus grand que" (>)

Comme pour la base de données SQL Server, l'opérateur > de PostgreSQL filtre les dates supérieures à la date de comparaison.

-- Select all orders placed after January 1, 2023
SELECT *
FROM Orders
WHERE OrderDate > '2023-01-01';

Utilisation de la fonction EXTRACT

La fonction EXTRACT est utilisée dans PostgreSQL pour récupérer des champs de date tels que l'année, le mois ou le jour. Dans la requête ci-dessous, la clause EXTRACT filtre les enregistrements de l'ANNÉE 2023.

-- Select all orders placed in the year 2023
SELECT *
FROM Orders
WHERE EXTRACT(YEAR FROM OrderDate) = 2023;

Utilisation de la fonction INTERVALLE

La fonction INTERVAL est utilisée dans PostgreSQL pour effectuer certains calculs de date. INTERVAL vous permet d'ajouter ou de soustraire des quantités spécifiques de temps à une date.

-- Select all orders placed in the last 30 days
SELECT *
FROM Orders
-- Filter orders placed within the last 30 days from the current date
WHERE OrderDate > NOW() - INTERVAL '30 days';

Utilisation de la fonction DATE_PART

La fonction DATE_PART permet d'extraire un sous-champ de la valeur de la date. Cette sous-zone peut contenir la date ou l'heure. La requête ci-dessous renvoie les commandes passées en mars, ce qui donne une valeur de double précision de 3 pour le troisième mois.

-- Select all orders placed in March
SELECT *
FROM Orders
WHERE DATE_PART('month', OrderDate) = 3;

Utilisation de la fonction TO_DATE

La fonction TO_DATE de PostgreSQL convertit une chaîne de caractères donnée en une valeur de date basée sur le format donné. Dans la requête ci-dessous, la valeur de la date est fournie sous forme de chaîne de caractères. Vous convertissez donc la date au format YYYY-MM-DD.

-- Select all orders placed on January 1, 2023, using a string date
SELECT *
FROM Orders
WHERE OrderDate = TO_DATE('2023-01-01', 'YYYY-MM-DD');

Utilisation de l'option ENTRE pour les plages de dates

Comme pour SQL Server, la clause BETWEEN de PostgreSQL filtre les données dans un intervalle spécifique. Pour les valeurs contenant des dates, la fonction BETWEEN filtre et renvoie les lignes entre les dates indiquées. Ces dates sont également incluses dans les résultats.

-- Select all orders placed between January 1, 2023, and December 31, 2023
SELECT *
FROM Orders
WHERE OrderDate BETWEEN '2023-01-01' AND '2023-12-31';

Comparaison de dates dans Oracle

Utilisation de l'opérateur "plus grand que" (>)

L'opérateur > filtre les dates postérieures à la date de comparaison.

-- Select all active users with an end date in the future
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is in the future
  AND EndDate > SYSDATE;

Traitement des dates NULL et des conditions complexes

Lorsque vous comparez des dates dans une base de données Oracle, il est important de spécifier des scénarios complexes, tels que des dates vides. Dans ce cas, nous utilisons la clause IS NULL pour filtrer les enregistrements sans date.

-- Select all active users with either a future end date or no end date (NULL)
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is either in the future or is NULL (no end date)
  AND (EndDate > SYSDATE OR EndDate IS NULL);

Utilisation de l'option ENTRE pour les plages de dates

La clause BETWEEN est également utilisée dans Oracle pour filtrer les données à l'intérieur d'une plage spécifique. Pour les valeurs contenant des dates, la fonction BETWEEN filtre et renvoie les enregistrements entre les dates indiquées. Ces dates sont également incluses dans les résultats.

-- Select all active users with an end date between the current date and a specified future date (e.g., end of the year)
SELECT *
FROM Users
-- Filter users with status 'Active'
WHERE Status = 'Active'
  -- Ensure the end date is between the current date and a specified future date (e.g., December 31, 2023)
  AND EndDate BETWEEN SYSDATE AND DATE '2023-12-31';

Pièges courants et meilleures pratiques

J'ai rencontré des problèmes avec les dates et l'opérateur "plus grand que" dans SQL. Voici quelques erreurs courantes que j'ai découvertes et des conseils pour les éviter.

Formats de date incohérents

L'utilisation de formats de date incohérents dans vos requêtes entraînera des erreurs. Vous risquez de ne pas obtenir les résultats souhaités si vous mélangez des formats de date tels que YYYY-MM-DD et MM-DD-YYYY

Pour éviter ces problèmes, veillez à toujours utiliser le format de date standard. Vous pouvez également convertir la date dans le format de votre choix ou selon les conventions locales en utilisant TO_DATE dans les bases de données PostgreSQL ou Oracle. Pour SQL Server, vous pouvez utiliser les fonctions CAST et CONVERT.

-- Convert a string to a date
SELECT CAST('2023-06-26' AS DATE) AS ConvertedDate;

-- Convert a string to a datetime
SELECT CAST('2023-06-26 14:30:00' AS DATETIME) AS ConvertedDateTime;
-- Convert a string to a date using CONVERT
SELECT CONVERT(DATE, '2023-06-26') AS ConvertedDate;

-- Convert a string to a datetime using CONVERT
SELECT CONVERT(DATETIME, '2023-06-26 14:30:00') AS ConvertedDateTime;

Gestion des fuseaux horaires

Vous risquez d'obtenir des résultats inexacts lorsque vous traitez des données sur plusieurs fuseaux horaires. En outre, le fait de ne pas tenir compte des différences de fuseaux horaires lors de la conversion des dates peut entraîner des erreurs.

C'est pourquoi je vous recommande d'enregistrer vos dates en UTC (temps universel coordonné) et d'utiliser les fonctions de fuseau horaire intégrées pour convertir les dates.

-- Store dates in UTC and convert to local time zone
SELECT *
FROM Orders
-- Filter orders where the OrderDate in UTC is greater than the current date in the 'America/New_York' time zone
WHERE OrderDate AT TIME ZONE 'UTC' > SYSDATE AT TIME ZONE 'America/New_York';
-- Use time zone functions for accurate comparison
SELECT *
FROM Users
-- Filter users where the EndDate in UTC is greater than the current date in UTC
WHERE EndDate AT TIME ZONE 'UTC' > SYSDATE AT TIME ZONE 'UTC';

Éviter les erreurs courantes avec les dates

Lorsque vous travaillez avec des dates, il est important d'éviter les erreurs en ne récupérant que les valeurs dont vous avez besoin dans votre analyse. Par exemple, vous pouvez omettre la composante temporelle d'une valeur de date si elle n'est pas pertinente pour votre analyse. Traitez les valeurs NULL de manière explicite pour éviter les erreurs, en particulier lorsque les valeurs de date peuvent contenir l'erreur.

Rédiger des requêtes lisibles et faciles à maintenir

Vous pouvez vous retrouver à écrire des requêtes complexes et imbriquées, ce qui rend difficile la lecture et le suivi des différentes clauses. De même, si vous n'incluez pas de commentaires dans votre code, il est difficile d'expliquer ce qu'il fait.

Je vous recommande donc d'inclure des commentaires expliquant la logique qui sous-tend les clauses. Pour rendre les requêtes plus lisibles, vous pouvez également utiliser des sous-requêtes simples ou des Common Table Expressions (CTE). Consultez notre cours Reporting en SQL pour en savoir plus sur l'écriture de requêtes lisibles et faciles à maintenir pour l'analyse et le reporting.

Pourquoi les méthodes SQL diffèrent-elles ?

La diversité des méthodes SQL pour les comparaisons de dates entre différents systèmes de base de données tels que SQL Server, PostgreSQL et Oracle provient de l'évolution unique et des philosophies de conception de chaque système de gestion de base de données. Chaque système a été développé indépendamment et a répondu à des besoins différents des utilisateurs et à des exigences de compatibilité, ce qui a conduit à des implémentations variées des normes SQL et à des fonctionnalités propriétaires supplémentaires.

Par exemple :

  • SQL Server, développé par Microsoft, incorpore des fonctions et une syntaxe qui s'alignent étroitement sur les autres produits Microsoft, dans un souci d'intégration et de facilité d'utilisation dans l'écosystème Windows.
  • PostgreSQL est un projet open-source qui met l'accent sur l'extensibilité. Cette flexibilité encourage une variété de fonctions et d'opérateurs de date qui peuvent être optimisés ou étendus par sa communauté.
  • Oracle se concentre généralement sur l'évolutivité et la fiabilité des applications d'entreprise, ce qui conduit à des optimisations spécifiques dans la manière dont les dates et d'autres types de données sont traités, souvent en mettant l'accent sur des environnements transactionnels complexes et à fort volume.

Conclusion

Je vous encourage à pratiquer les différentes compétences pour savoir quand appliquer les fonctions SQL dans des scénarios réels. Envisagez de suivre les cours SQL Fundamentals et Intermediate SQL de DataCamp. Je recommande également la formation Associate Data Analyst in SQL aux aspirants analystes de données et data scientists pour vous aider à maîtriser les différentes techniques d'analyse. Ces cours vous aideront également à vous préparer à la certification SQL Associate, qui est un atout majeur sur un CV. 

Obtenez une certification SQL de haut niveau

Démontrez vos compétences de base en SQL et faites progresser votre carrière dans le domaine des données.

Obtenez La Certification SQL

Photo of Allan Ouko
Author
Allan Ouko
LinkedIn
Je crée des articles qui simplifient la science des données et l'analyse, en les rendant faciles à comprendre et accessibles.

Questions fréquemment posées

Qu'est-ce qu'un opérateur de comparaison ?

Les opérateurs de comparaison comparent deux valeurs et renvoient des résultats indiquant si les valeurs sont vraies ou fausses à partir de la valeur comparée.

Quels sont les opérateurs couramment utilisés dans les valeurs de date SQL ?

Les opérateurs couramment utilisés dans les valeurs de date SQL sont les suivants : égal à (=), supérieur à (>), inférieur à (<), supérieur ou égal à (>=), inférieur ou égal à (<=).

Quand l'opérateur BETWEEN est-il utilisé en SQL ?

L'opérateur BETWEEN permet de filtrer les enregistrements dans une certaine fourchette.

Quel opérateur dois-je utiliser si mes dates ont des valeurs NULL ?

Vous devez inclure la clause IS NULL pour gérer les valeurs nulles et éviter les erreurs dans les résultats de la requête.

Que dois-je faire si ma requête SQL renvoie des erreurs lors du filtrage de la valeur de la date ?

Vérifiez que le format de vos dates est correct. Si ce n'est pas le cas, convertissez-les dans un format cohérent comme YYYY-MM-DD.

Sujets

Apprenez SQL avec DataCamp

Certification disponible

Course

Introduction à SQL

2 hr
799.6K
Apprenez à créer et à interroger des bases de données relationnelles à l'aide de SQL en seulement deux heures.
See DetailsRight Arrow
Start Course
Certification disponible

Course

SQL intermédiaire

4 hr
251.1K
Accompagné à chaque étape de requêtes pratiques, ce cours vous enseigne tout ce que vous devez savoir pour analyser des données en utilisant votre propre code SQL dès aujourd'hui !
Voir plusRight Arrow
Apparenté

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

See MoreSee More