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 型の値に対して、日付・時刻の加減算ができる。
特にコメントなし。以上。