ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

Oracle:DATE型カラム用データの生成方法

スポンサーリンク

Oracleにデータを挿入しようとしたところ、「ORA-01830: 日付書式の変換で不要なデータが含まれています。 」が表示されました。
SQL文は、

INSERT INTO users (column1, datecolumn1) VALUES ('1', '2016/02/04 23:59:59')

です。
DATE型のカラムでエラーということまでは想像できました。

f:id:AJYA:20160129060449j:plain
photo credit: IMG_1078 via photopin (license)

変換が必要

検索をしてみると、文字列から日付型への暗黙変換を期待せず、明示的に変換するように書かれていました。
ORA-01830 - オラクル・Oracle エラー FAQ


TO_DATE()を使えば、明示的に変換できるようです。

SQL文を

INSERT INTO users (column1, datecolumn1) VALUES ('1', '2016/02/04 23:59:59')

から

INSERT INTO users (column1, datecolumn1) VALUES ('1', TO_DATE('2016/02/04 23:59:59', 'YYYY/MM/DD HH24:MI:SS'))

に変更したところ、挿入できるようになりました。


8年か9年前にもOracleを利用していた時期があったので、同じようにエラーが起きて対処したはずですが、全く記憶がありませんでした。
次回からはこの記事を探して、すぐ対処ができるようになります。