MONTHS_BETWEEN
📄字数 692
👁️阅读量 加载中...
功能描述
计算两个日期之间的月份差。
语法格式
sql
MONTHS_BETWEEN(expr1,expr2)输入参数
expr1:DATE、DATETIME、DATETIME WITH TIME ZONE类型或者能隐式转换为DATE、DATETIME、DATETIME WITH TIME ZONE类型的其他类型的值或者表达式。expr2:DATE、DATETIME、DATETIME WITH TIME ZONE类型或者能隐式转换为DATE、DATETIME、DATETIME WITH TIME ZONE类型的其他类型的值或者表达式。
注意
expr1、expr2 为动态参数(如预编译语句参数)或字符串类型(VARCHAR)时,服务端优先匹配为 DATETIME 类型,可使用 CAST() 将 expr1、expr2 转换为期望的类型,
如:MONTHS_BETWEEN(CAST('2025-06-18' AS DATE), CAST('2025-05-18' AS DATE))。
输出结果
DOUBLE 数值类型,输入参数为 NULL 时,输出结果为 NULL,若 expr2 大于 expr1,则返回负数。
注意
如果 expr1 和 expr2 的日部分相同,或都是月末的最后一天,则返回整数月份差。如果日部分不同,则返回小数月份差,计算时以 31 天为基准月,按比例计算剩余天数。计算公式如下:MONTHS_BETWEEN = (year1 - year2) * 12 + (month1 - month2) + (day1 - day2) / 31。
示例
sql
-- 比较两个输入日期之间的月份差
SQL> SELECT MONTHS_BETWEEN('2025-06-18 02:00:00','2025-05-18 02:00:00') FROM dual;
+--------------+
| EXPR1 |
+--------------+
| 1.000000e+00 |
+--------------+