MONTHS_BETWEEN函数用于返回日期end_date和start_date之间的月数。
命令格式
DOUBLE MONTHS_BETWEEN(DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ|STRING <end_date>, DATE|DATETIME|TIMESTAMP|TIMESTAMP_NTZ|STRING <start_date>)
-- 标准示例。
-- 返回2.9495967741935485。
SELECT MONTHS_BETWEEN('2025-06-28 10:30:00', '2025-3-30');参数说明
end_date、start_date:必填。日期或时间戳。支持DATE、DATETIME、TIMESTAMP、TIMESTAMP_NTZ或STRING类型。
STRING类型作为输入参数时,日期格式需包含yyyy-mm-dd。
返回值说明
返回DOUBLE类型。返回规则如下:
当end_date晚于start_date时,返回值为正。当start_date晚于end_date时,返回值为负。
当end_date和start_date分别对应两个月的最后一天,返回整数月;否则计算方式为end_date减去start_date的天数除以31天。
end_date或start_date值为NULL时,返回NULL。
使用示例
示例1:非整月间隔。
-- 结果以31天为基准折算成小数月。正负号由日期顺序决定。 -- 返回3.9495967741935485。 SELECT MONTHS_BETWEEN('2025-02-28 10:30:00', '2024-10-30'); -- 返回-3.9495967741935485。 SELECT MONTHS_BETWEEN('2024-10-30', '2025-02-28 10:30:00');示例2:月末对齐的整月差计算。
-- 两日期均为各自月份最后一天,视为整月对齐。 -- end_date 早于 start_date,结果为负。 -- 返回-3.0。 SELECT MONTHS_BETWEEN('2025-09-30', '2025-12-31');示例3:NULL 输入处理。
-- 返回NULL。 SELECT MONTHS_BETWEEN('2025-06-15', NULL); -- 返回NULL。 SELECT MONTHS_BETWEEN(NULL, '2025-06-15');示例4:跨年月份计算。
-- 返回12.0。 SELECT MONTHS_BETWEEN('2026-01-31', '2025-01-31');
相关函数
MONTHS_BETWEEN函数属于日期函数,更多日期计算、日期转换的相关函数请参见日期函数。
该文章对您有帮助吗?