SQL Server 函数

SQL Server (Transact-SQL) DATEDIFF() 函数根据指定的单位返回两个日期值之间的差值。

语法

DATEDIFF(datepart, date1, date2) 

参数

datepart

必需. 指定结果的单位类型。它可以是以下值之一:

日期部分简写
yearyy, yyyy
quarterqq, q
monthmm, m
dayofyeardy, y
daydd, d
weekwk, ww
weekdaydw, w
hourhh
minutemi, n
secondss, s
millisecondms
microsecondmcs
nanosecondns
date1必需. 指定第一个日期值来计算差异 (date1 - date2)。
date2必需. 指定第二个日期值以计算差异 (date1 - date2)。

返回值

返回以指定单位表示的两个日期值之间的差值。

示例 1 :

下面的示例显示了DATEDIFF()函数的用法。

SELECT DATEDIFF(year, '2019-10-25', '2024-10-15');
Result: 5

SELECT DATEDIFF(yyyy, '2019-10-25', '2024-10-15');
Result: 5

SELECT DATEDIFF(yy, '2019-10-25', '2024-10-15');
Result: 5

SELECT DATEDIFF(quarter, '2019-10-25', '2024-10-15');
Result: 20

SELECT DATEDIFF(month, '2019-10-25', '2024-10-15');
Result: 60

SELECT DATEDIFF(day, '2019-10-15 10:20:25', '2019-10-25 12:40:45');
Result: 10

SELECT DATEDIFF(hour, '2019-10-15 10:20:25', '2019-10-25 12:40:45');
Result: 242

SELECT DATEDIFF(minute, '2019-10-15 10:20:25', '2019-10-25 12:40:45');
Result: 14540

SELECT DATEDIFF(second, '2019-10-15 10:20:25', '2019-10-25 12:40:45');
Result: 872420 

示例2:

考虑名为 Orders 的数据库表,其中包含以下记录:

OrderQuantityPriceOrderDatePaymentDate
1001.582017-08-182017-08-20
1201.612018-03-232018-03-28
1251.782018-09-122018-09-22
501.802019-01-162019-01-17
2001.722020-02-062020-02-08

要计算结算交易所需的天数,可以使用以下查询:

SELECT *, DATEDIFF(day, PaymentDate, OrderDate) AS SettlementDays
FROM Orders; 

这将产生类似于以下内容的结果:

OrderQuantityPriceOrderDatePaymentDateSettlementDays
1001.582017-08-182017-08-202
1201.612018-03-232018-03-285
1251.782018-09-122018-09-2210
501.802019-01-162019-01-171
2001.722020-02-062020-02-082