SQL DATEDIFF

摘要:本教程将教您如何使用 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

startdateenddate 是要查找差值的日期文本或表达式。

返回

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() 函数计算两个日期之间的差值。

本教程有帮助吗?