MONTHS_BETWEEN
返回两个日期之间的月份数。 MONTHS_BETWEEN
可返回整数或 FLOAT:
-
整数:date1 和 date2 的日期部分相同,且两个日期都不是本月的最后一天。
MONTHS_BETWEEN
如果 date1 和 date2 中的两个日期都是各自月份的最后一个,也返回整数。例如,MONTHS_BETWEEN
将 4 月 30 日到 3 月 31 日之间的差异计算为 1 个月。 -
FLOAT:date1 和 date2 的日期部分不同,且其中一个或两个日期并非各自月份的最后一天。例如,4 月 2 日和 3 月 1 日之间的差异为
1.03225806451613
。为计算月份部分,MONTHS_BETWEEN
假设所有月份都包含 31 天。
MONTHS_BETWEEN
忽略时间戳时间部分。
行为类型
语法
MONTHS_BETWEEN ( date1 , date2 );
参数
- date1
date2 - 指定要求值的日期,其中 date1 和 date2 的求值结果为以下数据类型之一:
-
DATE
-
TIMESTAMP
-
TIMESTAMPTZ
如果 date1 < date2,则
MONTHS_BETWEEN
返回负值。 -
示例
返回 2016 年 4 月 7 日到 2015 年 1 月 7 日之间的月份数:
=> SELECT MONTHS_BETWEEN ('04-07-16'::TIMESTAMP, '01-07-15'::TIMESTAMP);
MONTHS_BETWEEN
----------------
15
(1 row)
返回 2016 年 3 月 31 日到 2016 年 2 月 28 日之间的月份数(MONTHS_BETWEEN
假设两个月都包含 31 天):
=> SELECT MONTHS_BETWEEN ('03-31-16'::TIMESTAMP, '02-28-16'::TIMESTAMP);
MONTHS_BETWEEN
------------------
1.09677419354839
(1 row)
返回 2016 年 3 月 31 日到 2016 年 2 月 29 日之间的月份数:
=> SELECT MONTHS_BETWEEN ('03-31-16'::TIMESTAMP, '02-29-16'::TIMESTAMP);
MONTHS_BETWEEN
----------------
1
(1 row)