跳到主要内容

months_between:计算月份差

速查结论

months_between(timestamp1, timestamp2[, roundOff]) 是 Spark SQL 中用于计算两个时间戳之间相差的月数的函数。

语法

months_between(timestamp1, timestamp2[, roundOff])

参数说明

参数说明
timestamp1较晚的时间戳
timestamp2较早的时间戳
roundOff可选布尔值,默认为 true。若为 true,结果四舍五入到 8 位小数;若为 false,不进行四舍五入

months_between(timestamp1, timestamp2[, roundOff]) - 如果 timestamp1 比 timestamp2 晚,那么结果为正数。如果 timestamp1 和 timestamp2 是同一月的同一天,或者都是月末的最后一天,将忽略一天中的小时数。否则,差异将基于每月 31 天来计算,并且除非 roundOff=false,否则将四舍五入到 8 位小数。

Examples:

> SELECT months_between('1997-02-28 10:30:00', '1996-10-30');
3.94959677
> SELECT months_between('1997-02-28 10:30:00', '1996-10-30', false);
3.9495967741935485

常见报错与避坑指南

  • 参数顺序影响符号:若 timestamp1 早于 timestamp2,结果将为负数。确保按"较晚时间戳在前"的顺序传参。
  • 月末日期特殊处理:当两个日期都是各自月份的月末时,函数会忽略具体天数差异,按整月计算。注意此行为可能导致非预期的结果。
  • roundOff 精度:默认 roundOff=true 时结果只保留 8 位小数,若需要更高精度请传入 roundOff=false

Since: 1.5.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看