最初にいくつかのポイント...
- テーブル名の中にスペースがあります
- 列が不足しているというエラーは、テーブルに複数の列があることが原因で発生します
- あなたは本当にこれをするべきではありません
- が列の場合、文字列を日付に変換できないため
ret_date
、引用符()でカプセル化しないでください。'
'ret_date'
ret_date
ただし、次のような文字列を想定しています13-06-2012
insert into ob_select_lst12_spg_wed (my_column)
values(to_char(to_date(:ret_date,'dd-mm-yyyy'),'mmdd'));
が日付データ型の場合ret_date
、内部変換を削除できます。
insert into ob_select_lst12_spg_wed (my_column)
values(to_char(:ret_date,'mmdd'));
to_char
to_date
どちらも、いくつかのオプションがある日時形式モデルを利用します。
ただし、これは行わないでください。常に日付を日付として保存する
あなたのコメントからret_date
は日付であり、列wed
は文字です。変数を指定していないため、エラーバインド変数が宣言されていません。これは日付であるため、別のテーブルにあると想定しret_date
ます。この場合、値のキーワードが失われ、そのテーブルから直接挿入されます。
insert into ob_select_lst12_spg (wed)
select to_char(ret_date,'mmdd')
from the_other_table
ただし、これは必須ではありません。データベースの終了時に、いつでも日付を任意の日付に変換できます。データベースに日付として保存しないと、エラーや誤った値が入り込みやすくなります。私は個人的に列wed
を日付に変更します。その場合、クエリは非常に単純になります。
insert into ob_select_list12_spg (wed)
select ret_date
from the_other_table
その後、データベースから選択するときに、ニーズに合った正しい日時形式モデルを使用できます。