Oracleの書式関数(文字列を日付型に変換)の使い方をまとめていきます。
広告
文字列を日付型に変換する
文字列を日付型に変換する場合、TO_DATE関数、TO_TIMESTAMP関数を使用します。
文法 | TO_DATE(str[, format [,nls_param]]) |
引数 | str:文字列 format:日付書式 ※引数書式参照 nls_param:NLS_CURRENCYなどのNLSパラメータ |
戻り値 | 文字列(str)を日付型(DATE型)に変換した値を返却します。 |
文法 | TO_TIMESTAMP(str[, format [,nls_param]]) |
引数 | str:文字列 format:日付書式 ※引数書式参照 nls_param:NLS_CURRENCYなどのNLSパラメータ |
戻り値 | 文字列(str)を日付型(TIMESTAMP型)に変換した値を返却します。 |
引数書式
以下の書式を指定することで、変換後の表記を指定できます。
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週目 |
使用例(TO_DATE関数)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
SQL> SQL>-- 時代 SQL>ALTER SESSION SET ; SQL>SELECT TO_DATE('H20-01-02', 'EYY-MM-DD', 'NLS_CALENDAR=''Japanese Imperial''') as E, TO_DATE('平成21-03-04', 'EEYY-MM-DD', 'NLS_CALENDAR=''Japanese Imperial''') as EE FROM DUAL; E EE -------------------- --------- 2008-01-02 00:00:00 2009-03-04 00:00:00 SQL> SQL>-- 年月日時分秒 SQL>SELECT TO_DATE('20010203040506', 'YYYYMMDDHH24MISS') as YMD FROM DUAL; YMD -------------------- 2001-02-03 04:05:06 |
使用例(TO_TIMESTAMP関数)
1 2 3 4 5 6 7 |
SQL> SQL>-- 年月日時分秒 SQL>SELECT TO_TIMESTAMP('10/09/02 15:10:20.1234567', 'DD/MM/YYHH24:MI:SS') as YMD FROM DUAL; YMD ---------------------------- 02-09-10 15:10:20.123456700 |