列がある場合は、ではなくDATE
常に を挿入する必要があります。文字列を正しく変換するために暗黙的なキャストに依存することは悪い考えです。異なるセッションで異なる NLS 設定を使用することは非常に簡単であり、したがって、暗黙的な変換を異なる方法で実行することは非常に簡単です (結果が異なるかエラーになります)。これを行う最も簡単な方法は、関数を使用することです。DATE
VARCHAR2
DATE
to_date
insert into Department( dname,
dnumber,
mgr_ssn,
mgr_start_date )
values('HR',
1,
'11001',
to_date( '2012-04-05 10:15:00', 'yyyy-mm-dd hh24:mi:ss') );
また、列をリストするようにステートメントを変更しました。これは、テーブル内の列の物理的な順序を毎回検索する必要がなくなり、INSERT
ステートメントが将来的に機能するようになるため、一般的には良い方法です。テーブルに新しい列を追加します。dnumber
は であるため、文字列を挿入するのではなく、数値を挿入するようにステートメントをNUMBER
変更しましたINSERT
(繰り返しますが、必要がない場合は暗黙的な変換に依存しないでください)。CHAR(9)
5 文字の文字列を挿入する社会保障番号を表す列があるという明らかなバグは修正しませんでした。