将1个日历月的间隔添加到日期

时间:2015-07-20 02:34:33

标签: vertica

我想在一个日期添加1个日历月,忽略该月的天数。即add_month('2015-02-23')返回2015-03-23add_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

1 个答案:

答案 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)

Read more

相关问题