SQL Server Datediff()函数

广告位

在本教程中,将学习如何使用SQL Server DATEDIFF()函数计算两个日期之间的年数,月数,周数,天…

在本教程中,将学习如何使用SQL Server DATEDIFF()函数计算两个日期之间的年数,月数,周数,天数等。

SQL Server DATEDIFF()函数简介

要计算年,月,周等两个日期之间的差值,请使用DATEDIFF()函数,它的语法如下:

DATEDIFF( date_part , start_date , end_date)  

DATEDIFF()函数接受三个参数:date_partstart_dateend_date

  • date_part参数是日期的一部分,例如,要在start_dateend_date之间进行比较的年份,季度,月份,周。 请参阅下表中的有效日期部分。
  • start_dateend_date参数是要比较的日期。 必须将它们解析为:,DATETIMEDATETIMEOFFSET,,SMALLATETIME或类型的值。

下表列出了date_part的有效值:

date_part 缩写形式
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns

DATEDIFF()函数返回一个整数值,表示start_dateend_date之间的差异,其中单位由date_part指定。

如果结果超出范围(-2,147,483,648+2,147,483,647),DATEDIFF()函数将返回错误。 在这种情况下,应该使用DATEDIFF_BIG()函数。

SQL Server DATEDIFF()函数示例

下面将举一些使用DATEDIFF()函数的例子来更好地理解它。

1. DATEDIFF()函数比较两个日期值之间的差值

此示例使用DATEDIFF()函数比较不同日期部分中两个日期之间的差值:

DECLARE       @start_dt DATETIME2= '2020-12-31 23:59:59.9999999',       @end_dt DATETIME2= '2021-01-01 00:00:00.0000000';    SELECT       DATEDIFF(year, @start_dt, @end_dt) diff_in_year,       DATEDIFF(quarter, @start_dt, @end_dt) diff_in_quarter,       DATEDIFF(month, @start_dt, @end_dt) diff_in_month,       DATEDIFF(dayofyear, @start_dt, @end_dt) diff_in_dayofyear,       DATEDIFF(day, @start_dt, @end_dt) diff_in_day,       DATEDIFF(week, @start_dt, @end_dt) diff_in_week,       DATEDIFF(hour, @start_dt, @end_dt) diff_in_hour,       DATEDIFF(minute, @start_dt, @end_dt) diff_in_minute,       DATEDIFF(second, @start_dt, @end_dt) diff_in_second,       DATEDIFF(millisecond, @start_dt, @end_dt) diff_in_millisecond;  

执行上面查询语句,得到以下结果:

SQL Server Datediff()函数

2. DATEDIFF()函数和表列示例以下示例使用DATEDIFF()函数将请求的交货日期与发货日期(以天为单位)进行比较,返回订单是否准时或延迟:

SELECT      order_id,       required_date,       shipped_date,      CASE          WHEN DATEDIFF(day, required_date, shipped_date) < 0          THEN 'Late'          ELSE 'OnTime'      END shipment  FROM       sales.orders  WHERE       shipped_date IS NOT NULL  ORDER BY       required_date;  

执行上面查询语句,得到以下结果:

SQL Server Datediff()函数

在本教程中,学习了如何使用SQL Server DATEDIFF()函数计算两个日期值之间的差值。

贺, 贺朝

关于作者: 贺朝

为您推荐