摘要:本教程将教您如何使用 SQL DATEDIFF()
函数计算两个日期之间的差值。
语法
要计算两个日期之间的差值,请使用 DATEDIFF()
函数。以下是 SQL Server 中 DATEDIFF()
函数的语法说明:
DATEDIFF ( datepart , startdate , enddate )
Code language: SQL (Structured Query Language) (sql)
参数
datepart
datepart
是日期中要让函数返回的部分。下表说明 SQL Server 中日期的有效部分
有效日期部分 | 缩写 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
天数 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微秒 | mcs |
纳秒 | ns |
startdate,enddate
startdate
和 enddate
是要查找差值的日期文本或表达式。
返回
DATEDIFF()
函数返回一个整数,其单位由 datepart
参数指定。
示例
以下示例返回两个日期之间的年数
SELECT DATEDIFF(year,'2015-01-01','2018-01-01');
Code language: SQL (Structured Query Language) (sql)
结果如下:
3
Code language: SQL (Structured Query Language) (sql)
要获得月份或天数,请将第一个参数更改为月份或天数,如下所示:
SELECT DATEDIFF(month,'2015-01-01','2018-01-01'),
DATEDIFF(day,'2015-01-01','2018-01-01');
Code language: SQL (Structured Query Language) (sql)
以下显示结果:
m d
----------- -----------
36 1096
Code language: SQL (Structured Query Language) (sql)
请注意,DATEDIFF()
函数会考虑闰年。正如结果中清楚显示的那样,由于 2016 年是闰年,所以两个日期之间的天数差为 2x365 + 366 = 1096。
以下示例说明如何使用 DATEDIFF()
函数计算两个 DATETIME
值之间的小时差:
SELECT DATEDIFF(hour,'2015-01-01 01:00:00','2015-01-01 03:00:00');
Code language: SQL (Structured Query Language) (sql)
结果为:
2
Code language: SQL (Structured Query Language) (sql)
请考虑以下示例:
SELECT DATEDIFF(hour,'2015-01-01 01:00:00','2015-01-01 03:45:00');
Code language: SQL (Structured Query Language) (sql)
它也返回两个小时,因为 DATEDIFF()
函数仅返回一个整数。在本例中,它截断了分钟部分,而只考虑小时部分。
2
Code language: SQL (Structured Query Language) (sql)
以下示例演示如何使用 DATEDIFF()
函数计算截止到 2018 年 1 月 1 日员工的服务年限:
SELECT first_name,
last_name,
DATEDIFF(year, hire_date, '2018-01-01') year_of_services
FROM employees;
Code language: SQL (Structured Query Language) (sql)
MySQL 中的 DATEDIFF
与 SQL Server 不同,MySQL 的 DATEDIFF()
函数语法稍有不同
DATEDIFF(startdate,enddate)
Code language: SQL (Structured Query Language) (sql)
MySQL 仅以天数返回两个日期之间的差值。它忽略了计算中日期的所有时间部分。请参见以下示例:
SELECT DATEDIFF('2018-08-09','2018-08-18');
Code language: SQL (Structured Query Language) (sql)
结果为九天
9
Code language: SQL (Structured Query Language) (sql)
在本教程中,您已学习如何使用 SQL DATEDIFF()
函数计算两个日期之间的差值。
本教程有帮助吗?