以下のように表示されます。
(日本語)
ORA-01861: リテラルが書式文字列と一致しません
(英語)
ORA-01861: literal does not match format string
発生パターン
このエラーは以下のような場合に発生します。
- 指定したフォーマット形式が、値とミスマッチである。
- エラー例1
- SQL> select to_date('2018/12/31 10:20:30') from dual; select to_date('2018/12/31 10:20:30') from dual * 行1でエラーが発生しました。: ORA-01861: リテラルが書式文字列と一致しません
to_dateをto_timestamp にするか、10:20:30を削除すればOKです。
- エラー例2
- SQL> select to_date('2018/12/31', 'hh24:mi:ss') from dual; select to_date('2018/12/31', 'hh24:mi:ss') from dual * 行1でエラーが発生しました。: ORA-01861: リテラルが書式文字列と一致しません
第2引数を 'yyyy/mm/dd' にすればOKです。
対処法
- 値に合ったフォーマット形式を指定する
備考
- TO_DATE、TO_TIMESTAMPはフォーマット形式を指定しないとデフォルトの日付フォーマット形式が使用されます。
デフォルトの日付フォーマットは以下SQLで確認できます。
1 2 |
select * from v$nls_parameters where parameter = 'NLS_DATE_FORMAT'; |
1 2 |
select * from v$nls_parameters where parameter = 'NLS_TIMESTAMP_FORMAT'; |