适用于:
Databricks SQL
Databricks Runtime 13.3 LTS 及更高版本
返回两个日期(天)之间的差值,或指定单位中两个时间戳之间的差值。
语法
date_diff(endDate, startDate)
date_diff(unit, start, end)
unit
{ MICROSECOND |
MILLISECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR }
参数
-
endDate:一个以DATE结尾的表达式。 -
startDate:一个以DATE开头的表达式。 -
unit:度量单位。 -
start:一个以TIMESTAMP开头的表达式。 -
end:一个以TIMESTAMP结尾的表达式。
返回
- 对于
date_diff(endDate, startDate),表示INTEGER从startDate到endDate的天数。 - 对于 ,a
BIGINT表示 和end之间的差start值,测量单位为unitdate_diff(unit, start, end)s。 这种形式是“功能”的同义词timestampdiff。
如果起始值大于结束值,结果为负。
该函数根据 UTC 统计已消逝的完整单位数,一个 DAY 为 86400 秒。
如果日历月份递增并且日历日期和时间等于或大于开始值时,则认为一个月已消逝。 从该时间开始消逝的周数、季数和年数。
示例
> SELECT date_diff(DATE'2009-07-31', DATE'2009-07-30');
1
-- One second shy of a month elapsed
> SELECT date_diff(MONTH, TIMESTAMP'2021-02-28 12:00:00', TIMESTAMP'2021-03-28 11:59:59');
0
-- One month has passed even though its' not end of the month yet because day and time line up.
> SELECT date_diff(MONTH, TIMESTAMP'2021-02-28 12:00:00', TIMESTAMP'2021-03-28 12:00:00');
1
-- Start is greater than the end
> SELECT date_diff(YEAR, DATE'2021-01-01', DATE'1900-03-28');
-120