最新历史版本 :DATEDIF-日期差 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

语法
DATEDIF(文本/开始日期, 文本/结束日期, 单位)返回两个指定日期间的天数、月数或年数
     参数1文本/开始日期

开始日期:代表所指定时间段的初始日期

结束日期:代表所指定时间段的终止日期

     参数2文本/结束日期
    参数3单位

函数返回信息的类

  • 单位=“Y/y”,则返回年差数

  • 单位=“M/m”,则返回月差数

  • 单位=“W/w”,则返回周差数

  • 单位=“D/d”,则返回日差数

  • 单位=“MD/md”,则忽略年和月,返回日差数

  • 单位=“YM/ym”,则忽略年和日,返回月差数

  • 单位=“YD/yd”,则忽略年,返回日差数

  • 单位=“H”,则忽略年,返回时差数

  • 单位=“mi”,则忽略年,返回分差数

  • 单位=“S”,则忽略年,返回秒差数

单位要求是常量,不支持字段,可以输入参数

注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"),如下图所示:

计算后的日期差如下图所示: