Comparaison des fonctions DATEADD et DATEDIFF
Mis à jour : 14 avril 2006
La fonction DATEADD ajoute un intervalle à la date spécifiée. Par exemple, si l'échéance de toutes les commandes de la table SalesOrderHeader
était décalée de 3
jours, vous pourriez obtenir les nouvelles dates en exécutant l'instruction suivante :
USE AdventureWorks;
GO
SELECT DATEADD(day, 3, DueDate)
FROM Sales.SalesOrderHeader;
GO
Si le paramètre date est de type smalldatetime, le résultat est lui aussi de type smalldatetime. Vous pouvez utiliser DATEADD pour ajouter des secondes ou des millièmes de seconde à une valeur smalldatetime, mais cette opération n'a de sens que si la date retournée par DATEADD évolue d'au moins 1 minute par rapport à la date spécifiée.
La fonction DATEDIFF calcule le temps écoulé sous forme de parties de date entre la deuxième et la première date que vous spécifiez. En d'autres termes, elle recherche un intervalle entre deux dates. Le résultat est une valeur entière avec signe, égale à date2 - date1 sous forme de parties de date.
La requête suivante utilise la date November 30, 2001
et trouve le nombre de jours écoulés entre DueDate
et cette date :
USE AdventureWorks;
GO
SELECT DATEDIFF(day, DueDate, 'Nov 30 2001')
FROM Sales.SalesOrderHeader;
GO
Les lignes de SalesOrderHeader
pour lesquelles l'échéance (DueDate
) est le 21 octobre 2001 produisent un résultat de 40 avec la requête précédente (il y a 40 jours entre le 21 octobre et le 30 novembre). Pour calculer un intervalle en mois, utilisez la requête suivante :
USE AdventureWorks;
GO
SELECT interval = DATEDIFF(month, DueDate, 'Nov 30 2001')
FROM Sales.SalesOrderHeader;
GO
Cette requête renvoie la valeur 1 pour les lignes dont DueDate
(échéance) est en octobre, et la valeur 5 pour les lignes dont DueDate
est en juin.
Dans une fonction DATEDIFF, lorsque la première date est postérieure à la seconde date spécifiée, le résultat donne une valeur négative.
Si l'un des arguments ou si les deux arguments de date correspondent à la valeur smalldatetime, ils sont convertis en interne en valeur datetime pour le calcul. Lors de cette conversion, les secondes et les millièmes de seconde des valeurs smalldatetime sont automatiquement mis à 0 pour les besoins du calcul.
Remarque : |
---|
DATEDIFF retourne le nombre de limites de date et d'heure traversées entre deux dates spécifiées. Dans l'exemple suivant, la première instruction retourne 1 année (c'est-à-dire, 2006 - 2005 = 1). La seconde instruction retourne 1 mois (c'est-à-dire, Jan 2006 - Déc 2005). La troisième instruction retourne 12 pour le nombre de jours écoulés entre les deux dates. |
SELECT DATEDIFF(year, '20051220', '20060101')
SELECT DATEDIFF(month, '20051220', '20060101')
SELECT DATEDIFF(day, '20051220', '20060101')
Voir aussi
Autres ressources
CAST et CONVERT (Transact-SQL)
DATENAME (Transact-SQL)
Fonctions de date et d'heure (Transact-SQL)
DATEPART (Transact-SQL)
DATEADD (Transact-SQL)
GETDATE (Transact-SQL)
DATEDIFF (Transact-SQL)
SET DATEFORMAT (Transact-SQL)
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
14 avril 2006 |
|