在本教程中,将学习如何使用SQL Server DATEDIFF()函数计算两个日期之间的年数,月数,周数,天数等。
SQL Server DATEDIFF()函数简介
要计算年,月,周等两个日期之间的差值,请使用DATEDIFF()函数,它的语法如下:
DATEDIFF( date_part , start_date , end_date)
DATEDIFF()函数接受三个参数:date_part,start_date和end_date。
- date_part参数是日期的一部分,例如,要在- start_date和- end_date之间进行比较的年份,季度,月份,周。 请参阅下表中的有效日期部分。
- start_date和- end_date参数是要比较的日期。 必须将它们解析为:DATE,- DATETIME,- DATETIMEOFFSET,DATETIME2,- SMALLATETIME或TIME类型的值。
下表列出了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_date和end_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;
执行上面查询语句,得到以下结果:

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日期函数
												下一篇:
								SQL Server字符串函数
												
						
						
					
					
					