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

計算後的日期差如下圖所示:

