Accéder au contenu principal

DATEDIFF() FONCTION SQL

DATEDIFF() est l'une des fonctions de manipulation de données de date les plus utilisées en SQL. Maîtrisez-le en lisant ce tutoriel.
Actualisé 4 oct. 2024  · 3 min de lecture

Qu'est-ce que la DATEDIFF() fonction ?

La fonction DATEDIFF() renvoie l'intervalle entre deux horodatages ou valeurs de date dans une unité spécifiée. 

DATEDIFF() syntax

DATEDIFF(datepart, startdate, enddate)

Paramètres

Qu'est-ce que c'est ?

datepart

Un paramètre obligatoire. Il s'agit de l'unité dans laquelle DATEDIFF() rapporte la différence entre startdate et enddate. Voir la section suivante pour les différents types de valeurs qu'il peut contenir. 

startdate

Une valeur requise signifiant une valeur temporelle qui indique la date de début. 

enddate

Une valeur requise signifiant une valeur temporelle qui indique la date de fin. 

datepart syntax 

Le paramètre datepart peut prendre de nombreuses valeurs, dont les suivantes 

  • Année : year, y, yy, ou yyyy
  • Trimestre : quarter, qq, q
  • Mois : month, mm, m
  • Jour : dayofyear, day, dd, d
  • Semaine : week, wk, ww
  • Heure : hour, hh
  • Minute : minute, mi, n
  • Deuxièmement : second, ss, s
  • Milliseconde : millisecond, ms
  • Microseconde : microsecond, mcs
  • Nanoseconde : nanosecond, ns

 Notez que datepart ne doit pas être placé entre guillemets. Par exemple, la syntaxe suivante est correcte :

DATEDIFF(year, ‘2022-01-01', ‘2022-01-02')

La réponse suivante est incorrecte.

DATEDIFF(‘year', ‘2022-01-01', ‘2022-01-02')

DATEDIFF() exemples

Lorsque vous travaillez avec DATEDIFF(), les résultats peuvent être positifs ou négatifs. Si enddate est postérieur à startdate, DATEDIFF() renvoie une valeur positive. Si enddate est antérieur à startdate, DATEDIFF() renvoie une valeur négative. 

Exemple 1 : Trouver la différence entre deux dates

SELECT DATEDIFF(timepart, ‘2022-12-31', ‘2024-06-01')

Demande de renseignements

Sortie

SELECT DATEDIFF(year, ‘2022-12-31', ‘2024-06-01')

1

SELECT DATEDIFF(quarter, ‘2022-12-31', ‘2024-06-01')

2

SELECT DATEDIFF(month, ‘2022-12-31', ‘2024-06-01')

6

SELECT DATEDIFF(day, ‘2022-12-31', ‘2024-06-01')

153

SELECT DATEDIFF(week, ‘2022-12-31', ‘2024-06-01')

21

Exemple 2 : Trouver la différence entre deux horodatages

SELECT DATEDIFF(datepart, '2023-12-31 00:00:00, '2023-12-31 00:59:59')

Demande de renseignements

Sortie

SELECT DATEDIFF(hour,'2023-12-31 00:00:00', '2023-12-31 00:59:59')

0

SELECT DATEDIFF(minute,'2023-12-31 00:00:00','2023-12-31 00:59:59')

59

SELECT DATEDIFF(second,'2023-12-31 00:00:00','2023-12-31 00:59:59')

3599

SELECT DATEDIFF(millisecond,'2023-12-31 00:00:00','2023-12-31 00:59:59')

3599000

Amélioration de SQL pour les débutants

Acquérir les compétences SQL pour interagir avec vos données et les interroger.
Commencez à apprendre gratuitement

Exemple 3 : Trouvez la différence entre deux colonnes de dates

Considérez le tableau sales.orders, qui contient les colonnes suivantes :

  • order_date (au moment de la commande) 
  • shipped_date (lorsque la commande est expédiée)

Pour suivre le délai d'expédition, nous pouvons utiliser la fonction DATEDIFF().

SELECT
    order_id,
    order_date,
    shipped_date,
    DATEDIFF(day, order_date, shipped_date) order_to_ship_days
FROM sales.orders

order_id

order_date

shipped_date

order_to_ship_days

1

2016-01-01T00:00:00.000Z

2016-01-03T00:00:00.000Z

2

2

2016-01-01T00:00:00.000Z

2016-01-03T00:00:00.000Z

2

3

2016-01-02T00:00:00.000Z

2016-01-03T00:00:00.000Z

1

Exemple 4. Trouvez l'intervalle entre la date du jour et une colonne.

En utilisant le tableau sales.orders comme dans l'exemple 3, nous pouvons utiliser DATEDIFF() pour trouver l'intervalle entre la date du jour et la date à laquelle une commande est passée.

SELECT
   order_id,
   order_date,
   GETDATE() AS todays_date,
   DATEDIFF(day, order_date, GETDATE()) AS order_to_today -- interval between order_date with today's date
FROM sales.orders

order_id

order_date

shipped_date

order_to_ship_days

1

2016-01-01T00:00:00.000Z

2022-10-09T02:47:00.403Z

2473

2

2016-01-01T00:00:00.000Z

2022-10-09T02:47:00.403Z

2473

3

2016-01-02T00:00:00.000Z

2022-10-09T02:47:00.403Z

2472

Notes complémentaires

La fonction DATEDIFF() renvoie une erreur si le résultat est hors plage (c'est-à-dire si la valeur est supérieure à +2 147 483 647 ou inférieure à -2 147 483 647). Dans ce cas, la fonction DATEDIFF_BIG() est appropriée. 

Exigences techniques

Fonctionne avec SQL Server (à partir de 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse

Voir aussi

En savoir plus sur SQL

Devenez certifié SQL

Prouvez que vos compétences en SQL sont prêtes à l'emploi grâce à une certification.
Sujets

Cours SQL populaires

cours

Introduction to SQL

2 hr
921.7K
Learn how to create and query relational databases using SQL in just two hours.
Afficher les détailsRight Arrow
Commencer le cours
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

Voir plusVoir plus