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 | 
 
							
						 
								
														
							