Oracle DB でシステム日付を参照したり、和暦変換したり、日付を加減算したり

Oracle DB の日付に関するアレコレ。11g ぐらいの頃の知識なので少し古くなっているかも?最近のことはよく調べていない。

システム日付を取得する

SELECT
    TO_CHAR(SYSDATE          , 'YYYY-MM-DD HH24:MI:SS'    ),
    TO_CHAR(SYSTIMESTAMP     , 'YYYY-MM-DD HH24:MI:SS.FF3'),
    TO_CHAR(CURRENT_DATE     , 'YYYY-MM-DD HH24:MI:SS'    ),
    TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF3')
FROM DUAL;

これらのいずれかで取得できる。

TIMESTAMP は Oracle 9i 以降で使える。

西暦 ⇔ 和暦 変換

-- 西暦情報を和暦で出力する
SELECT
    TO_CHAR(SYSDATE, 'EEYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=''Japanese Imperial''')
FROM DUAL;
-- 平成30-05-01 09:19:37

-- 和暦の文字列を西暦で出力する
SELECT
    TO_CHAR(TO_DATE('平成17/10/15', 'EEYY-MM-DD', 'NLS_CALENDAR=''Japanese Imperial'''), 'YYYY-MM-DD')
FROM DUAL;
-- 2005-10-15

Japanese Imperial で和暦への変換ができる。

日付の加減算

SELECT
  TO_CHAR(SYSDATE + 1      , 'YYYY/MM/DD HH24:MI:SS'),  /* 1日   足す */
  TO_CHAR(SYSDATE + 1/24   , 'YYYY/MM/DD HH24:MI:SS'),  /* 1時間 足す */
  TO_CHAR(SYSDATE + 1/1440 , 'YYYY/MM/DD HH24:MI:SS'),  /* 1分   足す */
  TO_CHAR(SYSDATE + 1/86400, 'YYYY/MM/DD HH24:MI:SS')   /* 1秒   足す */
FROM DUAL;

DATE 型の値に対して、日付・時刻の加減算ができる。


特にコメントなし。以上。