2015-07-20 185 views
3

我想在日期中添加1個日曆月,而忽略當月的天數。即add_month('2015-02-23')返回2015-03-23add_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

+0

這似乎是具體的Vertica的行爲。至少,它在Postgres 9.3上正常工作。 –

回答

7

此行爲是由於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) 

Read more