Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


MONTHS_BETWEEN

📄字数 692
👁️阅读量 加载中...

功能描述

计算两个日期之间的月份差。

语法格式

sql
MONTHS_BETWEEN(expr1,expr2)

输入参数

  • expr1DATEDATETIMEDATETIME WITH TIME ZONE 类型或者能隐式转换为 DATEDATETIMEDATETIME WITH TIME ZONE 类型的其他类型的值或者表达式。
  • expr2DATEDATETIMEDATETIME WITH TIME ZONE 类型或者能隐式转换为 DATEDATETIMEDATETIME WITH TIME ZONE 类型的其他类型的值或者表达式。

注意

expr1expr2 为动态参数(如预编译语句参数)或字符串类型(VARCHAR)时,服务端优先匹配为 DATETIME 类型,可使用 CAST()expr1expr2 转换为期望的类型,
如:MONTHS_BETWEEN(CAST('2025-06-18' AS DATE), CAST('2025-05-18' AS DATE))。

输出结果

DOUBLE 数值类型,输入参数为 NULL 时,输出结果为 NULL,若 expr2 大于 expr1,则返回负数。

注意

如果 expr1expr2 的日部分相同,或都是月末的最后一天,则返回整数月份差。如果日部分不同,则返回小数月份差,计算时以 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 |
+--------------+