将1个日历月的时间间隔添加到日期
问题描述:
我想在日期中添加1个日历月,而忽略当月的天数。即add_month('2015-02-23')
返回2015-03-23
和add_month('2015-05-23')
回报2015-06-23
将1个日历月的时间间隔添加到日期
好像我可以使用INTERVAL '1 month'
要做到这一点,但我很惊讶地发现,每当我这样做,它增加了30天我的输入即功能一样INTERVAL '30 days'
。这也发生在你身上吗?我应该做些什么来增加1个日历月?
例子:
SELECT DATE('2015-04-23') + INTERVAL '1 month'
回报2015-05-23
而
SELECT DATE('2015-05-23') + INTERVAL '1 month'
回报2015-06-22
!
答
此行为是由于Vertica在SQL 2008上建模造成的,其中1 MONTH
是静态的30天,而不是“智能月”。
dbadmin=> SELECT INTERVAL '1 MONTH';
?column?
----------
30
(1 row)
为了获得所需的行为,你应该使用INTERVALYM
:
dbadmin=> SELECT INTERVALYM '1 MONTH';
?column?
----------
0-1
(1 row)
dbadmin=> SELECT DATE('2015-05-23') + INTERVALYM '1 MONTH';
?column?
---------------------
2015-06-23 00:00:00
(1 row)
这似乎是具体的Vertica的行为。至少,它在Postgres 9.3上正常工作。 –