【Oracle】【PL/SQL】年月データの1年後を取得する(ADD_MONTHS)
年月データの1年後を取得する(ADD_MONTHS)
やりたいこと
ADD_MONTHS
関数は指定した日時に指定の月数を足して返す関数です。
SELECT
ADD_MONTHS(SYSDATE,1), -- 1ヶ月後の日付を取得
ADD_MONTHS(SYSDATE,12) -- 1年後の日付を取得
FROM dual;
ここではこの関数を使用し、年(yyyy)や年月(yyyymm)といったデータの1年後のデータを取得します。
ADD_MONTHS
関数は年月日揃っているデータに対し処理を行うため、年や年月のデータに対してはそのまま使用することはできません。
コード
以下のようなデータが存在した時に下記コードを実行し、それぞれ1年後のデータを取得します。
年 | 年月 |
---|---|
2019 | 201904 |
取得したい内容
年 | 年月 |
---|---|
2020 | 202004 |
SELECT
TO_CHAR(ADD_MONTHS(CONCAT(test_yyyy,'0101'),12),'yyyy'), -- yyyy形式
TO_CHAR(ADD_MONTHS(CONCAT(test_yyyymm,'01'),12),'yyyymm') -- yyyymm形式
FROM dual;
上記コードで行っているのは以下のような内容です。
・CONCAT
関数で年のみもっていないデータに疑似的に月日のデータを付与する
・ADD_MONTHS
関数で12ヶ月後(1年後)の日付を取得する
・TO_CHAR
関数で取得した日付を成型しなおす