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'