1. 概述
语法 | DATEDIF(文本/开始日期, 文本/结束日期, 单位) | 返回两个指定日期间的天数、月数或年数 |
---|---|---|
参数1 | 文本/开始日期 | 开始日期:代表所指定时间段的初始日期 结束日期:代表所指定时间段的终止日期 |
参数2 | 文本/结束日期 | |
参数3 | 单位 | 函数返回信息的类型
单位要求是常量,不支持字段,可以输入参数 注1:4.0.30 及之后版本支持通过 DATEDIF 函数算出两个时间相差的周/小时/分钟/秒数;若两个时间差小于 1 周/小时/分钟/秒,则结果是0 注2:若使用该函数计算指定日期间的月数,不足一月时不想舍去,可使用 Spark SQL 的 months_between 函数 |
2. 注意事项
如果参数中有NULL,则结果为NULL
3. 示例
公式 | 结果 | 备注 |
---|---|---|
DATEDIF("2001/2/28","2004/3/20","Y") | 3,即在2001年2月28日与2004年3月20日之间有3个整年 | |
DATEDIF("2001/2/28","2004/3/20","M") | 37,即在2001年2月28日与2004年3月20日之间有36个整月 | |
DATEDIF("2001/2/28","2004/3/20","D") | 1116,即在2001年2月28日与2004年3月20日之间有1116个整天 | |
DATEDIF("2001/2/28","2004/3/20","md") | 8,即忽略月和年后,2001年2月28日与2004年3月20日的差为8天 | |
DATEDIF("2001/1/28","2004/3/20","YM") | 2,即忽略日和年后,2001年1月28日与2004年3月20日的差为2个月 | |
DATEDIF("2001/2/28","2004/3/20","yd") | 21,即忽略年后,2001年2月28日与2004年3月20日的差为21天 |
想要计算两个日期字段之间的间隔天数,例如「到货日期」和「订购日期」之间的间隔天数,新增一个字段,用 DATE 函数计算两者的天数,公式为:DATEDIF(订购日期,到货日期,"D"),如下图所示:
计算后的日期差如下图所示: