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 miww vs w 等)。

DATEDIFF 還可用於確定 UTC 與 SQL Server 本地時間之間的偏移量。以下語句可用於計算 UTC 與本地時間(包括時區)之間的偏移量。

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