Cours
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 ? |
|
Un paramètre obligatoire. Il s'agit de l'unité dans laquelle |
|
Une valeur requise signifiant une valeur temporelle qui indique la date de début. |
|
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
, ouyyyy
- 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 |
|
1 |
|
2 |
|
6 |
|
153 |
|
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 |
|
0 |
|
59 |
|
3599 |
|
3599000 |
Amélioration de SQL pour les débutants
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
|
|
|
|
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
|
|
|
|
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