Microsoft SQL Server DATEDIFF pour calculer les différences de période


Exemple

Syntaxe générale:

DATEDIFF (datepart, datetime_expr1, datetime_expr2)

Il retournera un nombre positif si datetime_expr est dans le passé relatif à datetime_expr2 , et un nombre négatif sinon.

Exemples

DECLARE @now DATETIME2 = GETDATE();
DECLARE @oneYearAgo DATETIME2 = DATEADD(YEAR, -1, @now);
SELECT @now                                    --2016-07-21 14:49:50.9800000
SELECT @oneYearAgo                             --2015-07-21 14:49:50.9800000
SELECT DATEDIFF(YEAR, @oneYearAgo, @now)       --1
SELECT DATEDIFF(QUARTER, @oneYearAgo, @now)    --4
SELECT DATEDIFF(WEEK, @oneYearAgo, @now)       --52
SELECT DATEDIFF(DAY, @oneYearAgo, @now)        --366
SELECT DATEDIFF(HOUR, @oneYearAgo, @now)       --8784
SELECT DATEDIFF(MINUTE, @oneYearAgo, @now)     --527040
SELECT DATEDIFF(SECOND, @oneYearAgo, @now)     --31622400

REMARQUE: DATEDIFF accepte également les abréviations dans le paramètre datepart . L'utilisation de ces abréviations est généralement déconseillée car elles peuvent être source de confusion ( m vs mi , ww vs w , etc.).

DATEDIFF peut également être utilisé pour déterminer le décalage entre l'heure UTC et l'heure locale du serveur SQL. L'instruction suivante peut être utilisée pour calculer le décalage entre l'heure UTC et l'heure locale (y compris le fuseau horaire).

select  DATEDIFF(hh, getutcdate(), getdate()) as 'CentralTimeOffset'