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 |
+--------------+