Oracleの書式関数(日付を文字列書式に変換)の使い方をまとめていきます。
広告
日付を文字列書式に変換する
日付を文字列書式に変換する場合、TO_CHAR関数を使用します。
文法 | TO_CHAR(date[, format [,nls_param]]) |
引数 | date:日付値 format:変換する書式 ※引数書式参照 nls_param:NLS_CURRENCYなどのNLSパラメータ |
戻り値 | 日付値(date)を書式(format)で指定した書式に変換した値を返却します。 |
引数書式
以下の書式を指定することで、変換後の表記を指定できます。
引数 | 表記 | 説明 |
AD | 紀元 | 紀元表記 (西暦1年以上は”西暦”、西暦1年より前は”紀元前”) |
BC | ||
CC | 世紀 | 世紀表記(西暦1900年は19、2000 年は20 、2001年は21) |
SCC | 符号付きの世紀表記(紀元前はマイナス) | |
E | 和暦 | 和暦略称のアルファベット表記 (明治:M / 大正:T / 昭和:S / 平成:Hなど) ※使用する場合はパラメータ(NLS_CALENDAR)を和暦にする必要がある。 |
EE | 和暦の日本語表記(”明治”、”大正”、”昭和”、”平成”など) ※使用する場合はパラメータ(NLS_CALENDAR)を和暦にする必要がある。 |
|
YYYY | 年 | 4桁の西暦 |
SYYYY | 4桁の西暦 ※符号付 | |
YYY | 年の下3桁 | |
YY | 年の下2桁 | |
Y | 年の下1桁 | |
SYEAR | 西暦年の英語表記 (西暦2000年は “TWO THOUSAND”、2022年は “TWENTY TWENTY-TWO”) |
|
YEAR | ||
MM | 月 | 2桁の月表記(01~12) |
MON | 月の略称表記(1月~12月) ※パラメータ(NLS_DATE_LANGUAGE)に依存する。 |
|
MONTH | 月のフルスペル表記 ※日本語環境ではMONを指定した場合と変わらない。 |
|
RM | 月のローマ数字表記(I~XII) | |
DD | 日 | 日にちを2桁で表示(01~31) |
D | 週の初め(日曜日)からの日にち(1~7) | |
DDD | 年の初め(1月1日)からの日にち(001~366) | |
DY | 曜日 | 曜日の略称(”日”~”土”) |
DAY | 曜日(”日曜日”~”土曜日”) | |
AM | 午前午後 | “午前”/”午後”を表示 |
PM | ||
HH | 時 | 時刻(時)を12時間で表示(01~12) |
HH12 | ||
HH24 | 時刻(時)を24時間で表示(00~24) | |
MI | 分 | 時刻(分)を表示(00~59) |
SS | 秒 | 時刻(秒)を表示(00~59) |
SSSSS | 1日の初め(0時0分0秒)からの秒数(00000~86399) | |
Q | 期 | 4半期の表記 (1~3月:1 / 4~6月:2 / 7~9月:3 / 10~12月:4) |
IW | 週 | ISO8601規格での年の初めからの週(01~53) |
WW | 年の初めからの週(01~53) | |
W | 月の初めからの週(1~5)※1日から7日が1週目 |
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
SQL>-- 紀元 SQL>SELECT SYSDATE, TO_CHAR(SYSDATE, 'AD') as AD, TO_CHAR(SYSDATE-2030*365, 'BC') as BC FROM DUAL; SYSDATE AD BC --------- ----- --------- 22-05-10 西暦 紀元前 SQL> SQL>-- 世紀 SQL>SELECT SYSDATE, TO_CHAR(SYSDATE, 'CC') as CC, TO_CHAR(SYSDATE-2030*365, 'SCC') as SCC FROM DUAL; SYSDATE CC SCC --------- ----- --------- 22-05-10 21 -01 SQL> SQL>-- 時代 SQL>ALTER SESSION SET NLS_CALENDAR='Japanese Imperial'; SQL>SELECT SYSDATE, TO_CHAR(SYSDATE, 'E') as E, TO_CHAR(SYSDATE, 'EE') as EE FROM DUAL; SYSDATE E EE --------- ----- --------- 22-05-10 R 令和 SQL> SQL>-- 年月日時分秒 SQL>SELECT SYSDATE, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') as YMD, TO_CHAR(SYSDATE, 'YEAR') as Y FROM DUAL; SYSDATE YMD Y --------- -------------------- ---------------------------- 22-05-10 2022-05-10 11:30:23 TWENTY TWENTY-TWO SQL> SQL>-- 週 SQL>SELECT SYSDATE, TO_CHAR(SYSDATE, 'WW') as WW, TO_CHAR(SYSDATE, 'W') as W, TO_CHAR(SYSDATE, 'D') as D, TO_CHAR(SYSDATE, 'DDD') as DDD FROM DUAL; SYSDATE WW W D DDD --------- --- -- -- ---- 22-05-10 19 2 3 130 |