You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark SQL使用months_between计算月份差如何忽略天数影响

Spark SQL 年月差值计算方案

原生months_between会将两个日期的日部分差异折算为小数返回,不符合你完全忽略日部分,仅按年月计算差值的需求,直接提取两个日期的年、月字段做计算即可:

  • 固定先后顺序的计算语句:
(YEAR(较晚日期) * 12 + MONTH(较晚日期)) - (YEAR(较早日期) * 12 + MONTH(较早日期))

你提到的两个示例验证结果如下:

示例1:较晚日期为2021年4月4日,较早日期为2021年1月28日
计算结果:(202112 + 4) - (202112 +1) = 3,符合预期
示例2:较晚日期为2021年3月18日,较早日期为2021年1月7日
计算结果:(202112 + 3) - (202112 +1) = 2,符合预期
如果需要支持日期先后顺序不固定的场景,直接返回正负差值,可使用通用写法:

(YEAR(date1) * 12 + MONTH(date1)) - (YEAR(date2) * 12 + MONTH(date2))

内容的提问来源于stack exchange,提问作者layal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 19:45:08