DATEDIFF (Transact-SQL)
Renvoie le nombre de limites de date et d'heure traversées entre deux dates spécifiées.
Conventions de la syntaxe de Transact-SQL
Syntaxe
DATEDIFF ( datepart , startdate , enddate )
Arguments
datepart
Paramètre qui spécifie l'élément de la date sur lequel calculer la différence. Le tableau suivant répertorie les parties de date et les abréviations reconnues par SQL Server 2005. Ces parties de date et ces abréviations ne peuvent pas être fournies sous forme de variable déclarée par l'utilisateur.Datepart Abréviation(s) year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
day
dd, d
week
wk, ww
Hour
hh
minute
mi, n
second
ss, s
millisecond
ms
startdate -
Date de début pour le calcul. startdate est une expression qui renvoie une valeur de type datetime ou smalldatetime, ou une chaîne de caractères dans un format de date.La précision de smalldatetime étant limitée à la minute, en cas d'utilisation d'une valeur smalldatetime, les secondes et les millisecondes sont toujours égales à 0.
Si vous spécifiez uniquement les deux derniers chiffres de l'année, les valeurs inférieures ou égales aux deux derniers chiffres de la valeur de l'option de configuration two-digit year cutoff appartiennent au même siècle que l'année de coupure. Les valeurs supérieures aux deux derniers chiffres de la valeur de cette option appartiennent au siècle qui précède l'année de coupure. Par exemple, si l'option two-digit year cutoff est égale à 2049 (valeur par défaut), 49 est interprété comme 2049 et 50 est interprété comme 1950. Pour éviter toute ambiguïté, écrivez les années sur quatre chiffres.
Pour plus d'informations sur la manière de spécifier les valeurs de temps, consultez Formats d'heure. Pour plus d'informations sur la manière de spécifier les dates, consultez Date et Time (Transact-SQL).
- enddate
Date de fin pour le calcul. enddate est une expression qui renvoie une valeur de type datetime ou smalldatetime, ou une chaîne de caractères dans un format de date.
Notes
startdate est soustrait de enddate. Si la valeur de startdate est postérieure à enddate, une valeur négative est renvoyée.
DATEDIFF renvoie une erreur si le résultat dépasse les limites valides pour les valeurs entières. Pour les millisecondes, le nombre maximal est égal à 24 jours, 20 heures, 31 minutes et 23 647 secondes. Pour les secondes, le nombre maximal est 68 années.
La méthode utilisée pour compter les limites traversées, telles que les minutes, les secondes et les millisecondes, assure la cohérence du résultat de DATEDIFF pour tous les types de données. Le résultat est une valeur entière signée, égale au nombre de limites d'éléments datepart traversés entre la première et la seconde date. Par exemple, le nombre de semaines entre le dimanche 4 janvier et le dimanche 11 janvier est égal à 1.
Types des valeurs renvoyées
integer
Exemple
L'exemple suivant détermine la différence en jours entre la date actuelle et la date de commande de produits de la base de données AdventureWorks
.
USE AdventureWorks;
GO
SELECT DATEDIFF(day, OrderDate, GETDATE()) AS NumberOfDays
FROM Sales.SalesOrderHeader;
GO
Voir aussi
Référence
CAST et CONVERT (Transact-SQL)
Types de données (Transact-SQL)
Fonctions de date et d'heure (Transact-SQL)
Autres ressources
Format ISO 8601
Format de date alphabétique
Format de date numérique
Format de date et d'heure ODBC
Formats d'heure
Format de chaîne non séparée