我想在一个日期添加1个日历月,忽略该月的天数。即add_month('2015-02-23')
返回2015-03-23
,add_month('2015-05-23')
返回2015-06-23
似乎我可以使用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 :(得分: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)