UJP - ORA-01861: リテラルが書式文字列と一致しません

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

  • カテゴリ ハウツー の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - ORA-01861: リテラルが書式文字列と一致しません

ORA-01861: リテラルが書式文字列と一致しません

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2018/5/24 0:01
 日時を,YYYY/MM/DD HH:MM:SS形式でデータを登録することは多いと思うけれど,Oracleでエラーになる時があった.そして再現してみる.

 テーブルを作成する.
scott@XE> create table w1 ( a char,b date);

表が作成されました。

scott@XE>
 データを投入する.
scott@XE> insert into w1 values ('a',sysdate);

1行が作成されました。

scott@XE>
 sysdateなのでサーバが保持している日時データがセットされた.これを特定の日時にアップデートして見る.
scott@XE> update w1 set a='B', b = '2999/12/31 23:59:59';
update w1 set a='B', b = '2999/12/31 23:59:59'
*
行1でエラーが発生しました。:
ORA-01861: リテラルが書式文字列と一致しません

scott@XE>
 こんな時はNLS_DATE_FORMATを使う.
 
scott@XE> ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';

セッションが変更されました。

scott@XE> 
 これは,デフォルトの設定がRR-MM-DD HH24:MI:SSになっているから.セッション変数だけれど変更した後,再度アップデートして見る.
scott@XE> update w1 set a='B', b = '2999/12/31 23:59:59';

1行が更新されました。

scott@XE>
 正しく更新されたか確認してみましょう. 
scott@XE> select * from w1;

A B

-------------------
B 2999/12/31 23:59:59

scott@XE>
 意図した通りになっていました!

トラックバック


広告スペース
Google