SQL Server (Transact-SQL) DATEDIFF() 函数根据指定的单位返回两个日期值之间的差值。
语法
DATEDIFF(datepart, date1, date2)
参数
datepart |
| ||||||||||||||||||||||||||||
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 的数据库表,其中包含以下记录:
OrderQuantity | Price | OrderDate | PaymentDate |
---|---|---|---|
100 | 1.58 | 2017-08-18 | 2017-08-20 |
120 | 1.61 | 2018-03-23 | 2018-03-28 |
125 | 1.78 | 2018-09-12 | 2018-09-22 |
50 | 1.80 | 2019-01-16 | 2019-01-17 |
200 | 1.72 | 2020-02-06 | 2020-02-08 |
要计算结算交易所需的天数,可以使用以下查询:
SELECT *, DATEDIFF(day, PaymentDate, OrderDate) AS SettlementDays
FROM Orders;
这将产生类似于以下内容的结果:
OrderQuantity | Price | OrderDate | PaymentDate | SettlementDays |
---|---|---|---|---|
100 | 1.58 | 2017-08-18 | 2017-08-20 | 2 |
120 | 1.61 | 2018-03-23 | 2018-03-28 | 5 |
125 | 1.78 | 2018-09-12 | 2018-09-22 | 10 |
50 | 1.80 | 2019-01-16 | 2019-01-17 | 1 |
200 | 1.72 | 2020-02-06 | 2020-02-08 | 2 |