メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

DATEADD 関数

指定された間隔で日付またはタイムスタンプ値を増分します。

構文

Copy
DATEADD( datepart, interval, {date|timestamp} )

この関数はタイムスタンプのデータ型を返します。

引数

datepart

関数が実行される日付部分 (例: 年、月、または日)。「日付関数またはタイムスタンプ関数の日付部分」を参照してください。

interval

ターゲット式に追加する間隔 ( 日数など ) を指定する整数。 負の整数は間隔を減算します。

date|timestamp

日付またはタイムスタンプの列、あるいは暗黙的に日付またはタイムスタンプに変換される式。日付またはタイムスタンプの式には、指定した日付部分が含まれている必要があります。

戻り型

TIMESTAMP

DATE テーブルに存在する 11 月の各日付に 30 日追加します。

Copy
select dateadd(day,30,caldate) as novplus30 from date where month='NOV' order by dateid; novplus30 --------------------- 2008-12-01 00:00:00 2008-12-02 00:00:00 2008-12-03 00:00:00 ... (30 rows)

日付リテラル値に 18 か月追加します。

Copy
select dateadd(month,18,'2008-02-28'); date_add --------------------- 2009-08-28 00:00:00 (1 row)

DATEADD 関数でのデフォルトの列名は DATE_ADD です。日付の値に使用するデフォルトのタイムスタンプは 00:00:00 です。

タイムスタンプを指定しない日付の値に 30 分追加します。

Copy
select dateadd(m,30,'2008-02-28'); date_add --------------------- 2008-02-28 00:30:00 (1 row)

日付部分には名前または略称を付けることができます。この場合、m は月 (month) ではなく分 (minute) を表します。

使用に関する注意事項

DATEADD(month, ...) および ADD_MONTHS 関数は、異なる月末になる日付を処理します。

  • ADD_MONTHS: 追加している日付が月の最終日である場合、結果は月の期間にかかわらず、常に結果の月の最終日になります。例えば、4 月 30 日 + 1 か月は 5 月 31 日になります。

    Copy
    select add_months('2008-04-30',1); add_months --------------------- 2008-05-31 00:00:00 (1 row)
  • DATEADD: 追加している日付が結果の月より短い場合、結果は月の最終日ではなく、結果の月の対応する日付になります。例えば、4 月 30 日 + 1 か月は 5 月 30 日になります。

    Copy
    select dateadd(month,1,'2008-04-30'); date_add --------------------- 2008-05-30 00:00:00 (1 row)

DATEADD 関数では dateadd(month, 12,…) または dateadd(year, 1, …) を使用するとき、うるう年の日付 02-29 は扱いが異なります。

Copy
select dateadd(month,12,'2016-02-29'); date_add --------------------- 2017-02-28 00:00:00 select dateadd(year, 1, '2016-02-29'); date_add --------------------- 2017-03-01 00:00:00