MONTHS_BETWEEN 函数

months_between(timestamp1, timestamp2[, roundOff])

功能描述

返回两个日期之间的月份数。如果 timestamp1 晚于 timestamp2,结果为正值;反之为负值。

时分秒部分的差异基于每月 31 天计算。如果 timestamp1 和 timestamp2 的日相同(例如都是 5 号),或者都是各自月份的最后一天,那么时分秒部分会被忽略。

参数说明

  • timestamp1:第一个日期/时间戳,支持 STRING、DATE、TIMESTAMP 类型。
  • timestamp2:第二个日期/时间戳,支持 STRING、DATE、TIMESTAMP 类型。
  • roundOff(可选):BOOLEAN 类型。为 true(默认)时结果保留 8 位小数;为 false 时返回完整精度。

返回结果

DOUBLE 类型。

使用示例

  1. 基本用法(默认 roundOff=true,保留 8 位小数):

    SELECT months_between('1997-02-28 10:30:00', '1996-10-30');
    -- 结果:3.94959677
  2. 关闭四舍五入,返回完整精度:

    SELECT months_between('1997-02-28 10:30:00', '1996-10-30', false);
    -- 结果:3.9495967741935485
  3. 两个日期都是月末时,时分秒被忽略:

    SELECT months_between('2002-03-31 10:30:00', '2002-02-28');
    -- 结果:1(2 月 28 日是 2 月最后一天,3 月 31 日是 3 月最后一天)

注意事项

  • 当任一参数为 NULL 时,返回 NULL。
  • 当两个日期的日相同或都是月末时,时分秒部分被忽略,结果为整数月份差。
  • 时分秒差异按每月 31 天(即 31×24×3600 秒)折算。

联系我们
预约咨询
微信咨询
电话咨询