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
相关产品推荐
相关产品推荐

