DATEDIFF()- Date Functions
-
DATEDIFF()
函数是一种用于计算日期差异的常见日期函数。 -
通常用于比较两个日期之间的时间跨度,以便进行日期计算和分析。
语法
大多数数据库中,DATEDIFF()
函数的语法:
DATEDIFF(unit, start_date, end_date)
-
unit
: 这是一个必需的参数,用于指定计算日期差的单位。常见的单位包括:DAY
,DD
: 天数(默认)WEEK
,WK
: 周数MONTH
,MM
: 月数QUARTER
,QQ
: 季度数YEAR
,YY
: 年数
-
start_date
: 起始日期,通常是一个日期或者日期时间表达式。 -
end_date
: 结束日期,也是一个日期或者日期时间表达式。
返回值
DATEDIFF()
函数返回一个整数值,表示在指定的单位内,从 start_date
到 end_date
的时间差。具体返回值的解释如下:
- 如果
start_date
在end_date
之前,则返回正数。 - 如果
start_date
在end_date
之后,则返回负数。 - 如果
start_date
和end_date
相等,则返回 0。
eg.
-
计算天数差:
SELECT DATEDIFF('2024-07-20', '2024-07-15') AS days_diff;
结果为
5
,即从 2024 年 7 月 15 日到 2024 年 7 月 20 日的天数差。 -
计算月数差:
SELECT DATEDIFF(MONTH, '2023-03-15', '2024-07-23') AS months_diff;
结果为
16
,即从 2023 年 3 月 15 日到 2024 年 7 月 23 日的月数差。 -
计算当前日期与某一列的日期差:
SELECT DATEDIFF(DAY, order_date, CURRENT_DATE()) AS days_since_order FROM orders;
返回每个订单的日期与当前日期之间的天数差,可用于跟踪订单的时效性。
Tips:
-
日期格式:在使用
DATEDIFF()
函数时,确保传递的日期格式符合数据库的要求,通常是YYYY-MM-DD
。 -
跨数据库的差异:不同的数据库系统可能对日期函数的实现和支持有所不同,例如,有些数据库可能支持额外的日期单位,或者可能有不同的函数名称和用法。
习题:
select n2.id
from new_cases as n1
join new_cases as n2
where DATEDIFF(n2.date, n1.date) = 1 and n2.increased_count > n1.increased_count
select datediff(created_at,'2018-01-13') as date_diff
from courses