跳到主要内容

MONTHS_BETWEEN

引入或更新: v1.2.307

返回 date1date2 之间的月份数。

语法

MONTHS_BETWEEN( <date1>, <date2> )

参数

date1date2 可以是 DATE 类型、TIMESTAMP 类型,或两者的混合。

返回类型

该函数根据以下规则返回一个 FLOAT 值:

  • 如果 date1 早于 date2,函数返回一个负值;否则,返回一个正值。

    示例:
    SELECT
    MONTHS_BETWEEN('2024-03-15'::DATE,
    '2024-02-15'::DATE),
    MONTHS_BETWEEN('2024-02-15'::DATE,
    '2024-03-15'::DATE);

    -[ RECORD 1 ]-----------------------------------
    months_between('2024-03-15'::date, '2024-02-15'::date): 1
    months_between('2024-02-15'::date, '2024-03-15'::date): -1
  • 如果 date1date2 落在各自月份的同一天,或者两者都是各自月份的最后一天,结果是整数。否则,函数根据一个31天的月份计算结果的小数部分。

    示例:
    SELECT
    MONTHS_BETWEEN('2024-02-29'::DATE,
    '2024-01-29'::DATE),
    MONTHS_BETWEEN('2024-02-29'::DATE,
    '2024-01-31'::DATE);

    -[ RECORD 1 ]-----------------------------------
    months_between('2024-02-29'::date, '2024-01-29'::date): 1
    months_between('2024-02-29'::date, '2024-01-31'::date): 1

    SELECT
    MONTHS_BETWEEN('2024-08-05'::DATE,
    '2024-01-01'::DATE);

    -[ RECORD 1 ]-----------------------------------
    months_between('2024-08-05'::date, '2024-01-01'::date): 7.129032258064516
  • 如果 date1date2 是相同的日期,函数忽略任何时间部分并返回0。

    示例:
    SELECT
    MONTHS_BETWEEN('2024-08-05'::DATE,
    '2024-08-05'::DATE),
    MONTHS_BETWEEN('2024-08-05 02:00:00'::TIMESTAMP,
    '2024-08-05 01:00:00'::TIMESTAMP);

    -[ RECORD 1 ]-----------------------------------
    months_between('2024-08-05'::date, '2024-08-05'::date): 0
    months_between('2024-08-05 02:00:00'::timestamp, '2024-08-05 01:00:00'::timestamp): 0
开始使用 Databend Cloud
低成本
快速分析
多种数据源
弹性扩展
注册