Résumé : dans ce tutoriel, vous apprendrez à utiliser la fonction DATEDIFF()
de SQL Server pour calculer le nombre d’années, de mois, de semaines, de jours,etc, entre deux dates.
SQL Server DATEDIFF() overview
Pour calculer la différence entre deux dates en années, en mois, en semaines, etc., vous utilisez la fonction DATEDIFF()
:
Code language: SQL (Structured Query Language) (sql)DATEDIFF( date_part , start_date , end_date)
La fonction DATEDIFF()
accepte trois arguments : date_part
start_date
, et end_date
.
-
date_part
est la partie de la date, par ex, une année, un trimestre, un mois, une semaine que vous voulez comparer entre lestart_date
etend_date
. Voir les parties de date valides dans le tableau ci-dessous. -
start_date
etend_date
sont les dates à comparer. Elles doivent être résolues en valeurs de typeDATE
DATETIME
DATETIMEOFFSET
DATETIME2
SMALLATETIME
, ouTIME
.
Le tableau suivant énumère les valeurs valides de date_part
:
date_part | abréviations |
---|---|
year | yy, yyyy |
trimestre | qq, q |
mois | mm, m |
jour de l’année | dy, y | jour |
semaine | semaine, ww | heure | hh | minute | mi, n |
seconde | ss, s |
milliseconde | ms | microseconde | mcs |
nanoseconde | ns |
La fonction DATEDIFF()
renvoie une valeur de nombre entier indiquant la différence entre la start_date
et la end_date
, avec l’unité spécifiée par date_part
.
La fonction DATEDIFF()
renvoie une erreur si le résultat est hors de la plage pour l’entier (-2 147 483 648 à +2 147 483 647). Dans ce cas, vous devez utiliser la fonction DATEDIFF_BIG()
à la place.
Exemples de la fonction DATEDIFF() de SQL Server
Prenons quelques exemples d’utilisation de la fonction DATEDIFF()
pour mieux la comprendre.
A) Utilisation de la fonction DATEDIFF() pour comparer les différences entre deux valeurs de date
Cet exemple utilise la fonction DATEDIFF()
pour comparer la différence entre deux dates dans diverses parties de date :
Code language: SQL (Structured Query Language) (sql)DECLARE @start_dt DATETIME2= '2019-12-31 23:59:59.9999999', @end_dt DATETIME2= '2020-01-01 00:00:00.0000000';SELECT DATEDIFF(year, @start_dt, @end_dt) diff_in_year, DATEDIFF(quarter, @start_dt, @end_dt) diff_in_quarter, DATEDIFF(month, @start_dt, @end_dt) diff_in_month, DATEDIFF(dayofyear, @start_dt, @end_dt) diff_in_dayofyear, DATEDIFF(day, @start_dt, @end_dt) diff_in_day, DATEDIFF(week, @start_dt, @end_dt) diff_in_week, DATEDIFF(hour, @start_dt, @end_dt) diff_in_hour, DATEDIFF(minute, @start_dt, @end_dt) diff_in_minute, DATEDIFF(second, @start_dt, @end_dt) diff_in_second, DATEDIFF(millisecond, @start_dt, @end_dt) diff_in_millisecond;
Voici la sortie :
B) Utilisation de la fonction DATEDIFF() avec tableau exemple de colonne
L’exemple suivant utilise la fonction DATEDIFF()
pour comparer la date de livraison demandée avec la date d’expédition en jours et retourner si la commande est à-.temps ou en retard :
Code language: SQL (Structured Query Language) (sql)SELECT order_id, required_date, shipped_date, CASE WHEN DATEDIFF(day, required_date, shipped_date) < 0 THEN 'Late' ELSE 'OnTime' END shipmentFROM sales.ordersWHERE shipped_date IS NOT NULLORDER BY required_date;
Voici la sortie :
Dans ce tutoriel, vous avez appris à utiliser la fonction DATEDIFF()
de SQL Server pour calculer la différence entre deux valeurs de date.