DATEDIFF 用於計算時間段差異
一般語法:
DATEDIFF (datepart, datetime_expr1, datetime_expr2)
如果 datetime_expr
相對於 datetime_expr2
過去,則返回正數,否則返回負數。
例子
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
注意:DATEDIFF
也接受 datepart
引數中的縮寫。通常不鼓勵使用這些縮寫,因為它們可能令人困惑(m
vs mi
,ww
vs w
等)。
DATEDIFF
還可用於確定 UTC 與 SQL Server 本地時間之間的偏移量。以下語句可用於計算 UTC 與本地時間(包括時區)之間的偏移量。
select DATEDIFF(hh, getutcdate(), getdate()) as 'CentralTimeOffset'