ADD_MONTHS 函數 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ADD_MONTHS 函數

ADD_MONTHS 會將指定幾個月新增至日期或時間戳記值或運算式。DATEADD 函數提供類似功能。

語法

ADD_MONTHS( {date | timestamp}, integer)

引數

date | timestamp

DATETIMESTAMP 資料類型的欄,或是隱含評估為 DATETIMESTAMP 類型的運算式。如果日期是某個月的最後一天,或者如果產生的月份是較短的月份,則函數會在結果中傳回該月的最後一天。若是其他日期,結果會包含與日期表達式一樣的相同天數。

integer

INTEGER 資料類型的值。使用負數可減少日期中的月份。

傳回類型

TIMESTAMP

範例

以下查詢會使用 TRUNC 函數中的 ADD_MONTHS 函數。TRUNC 函數會從 ADD_MONTHS 結果移除某日時間。ADD_MONTHS 函數會從 CALDATE 欄中新增 12 個月至每個值。在 CALDATE 欄中的值是日期。

select distinct trunc(add_months(caldate, 12)) as calplus12, trunc(caldate) as cal from date order by 1 asc; calplus12 | cal ------------+------------ 2009-01-01 | 2008-01-01 2009-01-02 | 2008-01-02 2009-01-03 | 2008-01-03 ... (365 rows)

下列範例會使用 ADD_MONTHS 函數,將 1 個月加到 timestamp

select add_months('2008-01-01 05:07:30', 1); add_months --------------------- 2008-02-01 05:07:30

下列範例示範當 ADD_MONTHS 函數對含有月份的日期進行操作的行為,而這些月份的天數皆不同時。此範例顯示函數如何處理在 3 月 31 日增加 1 個月,以及在 4 月 30 日增加 1 個月。4 月有 30 天,因此在 3 月 31 日的基礎上加上 1 個月就得到 4 月 30 日。5 月有 31 天,因此在 4 月 30 日的基礎上加上 1 個月就得到 5 月 31 日。

select add_months('2008-03-31',1); add_months --------------------- 2008-04-30 00:00:00 select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00