Oracle11gスキーマを使用しています
連結した日付から月日を選択して列に入れたい。
ここにある構文は理にかなっていますが、エラーが発生します。
INSERT INTO OB_SELECT_LST12_SPG WED
VALUES (((TO_CHAR(TO_DATE('RET_DATE', MM))||( TO_CHAR(TO_DATE('RET_DATE', DD)));
「SQLエラー:ORA-00907:右括弧がありません」
どんな助けでも大歓迎です。ありがとう。
Oracle11gスキーマを使用しています
連結した日付から月日を選択して列に入れたい。
ここにある構文は理にかなっていますが、エラーが発生します。
INSERT INTO OB_SELECT_LST12_SPG WED
VALUES (((TO_CHAR(TO_DATE('RET_DATE', MM))||( TO_CHAR(TO_DATE('RET_DATE', DD)));
「SQLエラー:ORA-00907:右括弧がありません」
どんな助けでも大歓迎です。ありがとう。
最初にいくつかのポイント...
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_charto_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
その後、データベースから選択するときに、ニーズに合った正しい日時形式モデルを使用できます。
日付列から日付、月を取得するためのサンプルクエリ:
Select ((To_Char(to_date('01-FEB-73','dd-mon-yy'), 'MM'))
||( To_Char(to_date('01-JAN-73','dd-mon-yy'), 'dd')))
from dual;
RET_DATEが日付データ型の場合は、
insert into table_name (columname)
Select ((To_Char(RET_DATE, 'MM'))
||( To_Char(RET_DATE, 'dd')))
from dual;
余分な括弧がありません。開店数(は8回、閉店数)は5回でした。
INSERT INTO OB_SELECT_LST12_SPG(WED)
VALUES ((TO_CHAR(TO_DATE(RET_DATE, MM)))||( TO_CHAR(TO_DATE(RET_DATE, DD))));
更新 他の列が不要であることを確認します(つまり、NULLを許可します)