dateDiff 函数:返回两个Date或DateTime类型之间的时差。
#语法
dateDiff('unit', startdate, enddate, [timezone])
#参数解释
unit—返回结果的时间单位,String类型
支持的时间单位: second, minute, hour, day, week, month, quarter, year
startdate — 第一个待比较值。 Date 或 DateTime.
enddate — 第二个待比较值。 Date 或 DateTime.
timezone — 可选参数。 如果指定了,则同时适用于startdate和enddate。
如果不指定,则使用startdate和enddate的时区。如果两个时区不一致,则结果不可预料。
正常情况,startdate 和 enddate 都没有空值,例如:
SELECT dateDiff('hour', toDateTime('2022-01-01 20:00:00'), toDateTime('2022-01-02 23:00:00'));
如果两个时间戳有一方或者两方都可能含有空值,使用dateDiff 函数前需要先处理空值(给它一个默认值),否则会报类型转换异常错误,例如:
select if(birth_day == '', toString(toDate(now())), birth_day) as birth,
dateDiff('year', toDate(birth), toDate(now())) as age
from ods_ssd.sms_base_patient;
注意:DateTime 的最小值为 1970-01-01 00:00:00 ,出生日期这类字段不能使用DateTime或者Date,时间戳类型值精确到秒(没有闰秒)。值的范围: [1970-01-01 00:00:00, 2106-02-07 06:28:15]。