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'