MONTHS_BETWEEN 函数
MONTHS_BETWEEN 确定两个日期之间相隔的月数。
如果第一个日期晚于第二个日期,则结果为正;否则,结果为负数。
如果任一参数为 null,则结果为 NULL。
语法
MONTHS_BETWEEN( date1, date2 )
参数
- date1
-
数据类型为
DATE
的列,或一个隐式计算结果为DATE
类型的表达式。 - date2
-
数据类型为
DATE
的列,或一个隐式计算结果为DATE
类型的表达式。
返回类型
FLOAT8
结果的整数部分基于日期的年份和月份值之间的差值。结果的小数部分根据日期的日期和时间戳值计算,假定一个月为 31 天。
如果 date1 和 date2 都包含一个月内的相同日期(例如,1/15/14 和 2/15/14)或该月的最后一天(例如 8/31/14 和 9/30/14),则结果是基于日期的年份和月份值的整数,无论时间戳部分是否匹配(如果存在)。
示例
以下示例返回 1969 年 1 月 18 日至 1969 年 3 月 18 日之间的月份。
select months_between('1969-01-18', '1969-03-18') as months;
months ---------- -2
以下示例返回 1969 年 1 月 18 日至 1969 年 1 月 18 日之间的月数。
select months_between('1969-01-18', '1969-01-18') as months;
months ---------- 0
以下示例返回事件的第一个和最后一个展示之间的月份。
select eventname, min(starttime) as first_show, max(starttime) as last_show, months_between(max(starttime),min(starttime)) as month_diff from event group by eventname order by eventname limit 5;
eventname first_show last_show month_diff --------------------------------------------------------------------------- .38 Special 2008-01-21 19:30:00.0 2008-12-25 15:00:00.0 11.12 3 Doors Down 2008-01-03 15:00:00.0 2008-12-01 19:30:00.0 10.94 70s Soul Jam 2008-01-16 19:30:00.0 2008-12-07 14:00:00.0 10.7 A Bronx Tale 2008-01-21 19:00:00.0 2008-12-15 15:00:00.0 10.8 A Catered Affair 2008-01-08 19:30:00.0 2008-12-19 19:00:00.0 11.35