2016-05-09 26 views
0
create table orders(
    ord_id numeric(5) primary key, 
    purch_Atm float(8), 
    ord_date date, 
    Customer_id Numeric(5), 
    foreign key (customer_id) references customer1 (customer_id), 
    Salesman_id Numeric(5), 
    foreign key (Salesman_id) references salesman(Salesman_id)) 

insert into orders values (70001,150.5,'2012-10-05',3005,5002); 
insert into orders values (70009,270.65,'2012-09-10',3001,5005); 
insert into orders values (70002,65.26,'2012-10-05',3002,5001); 
insert into orders values (70004,110.5,'2012-08-17',3009,5003); 
insert into orders values (70007,948.5,'2012-09-10',3005,5002); 
insert into orders values (70005,2400.6,'2012-07-27',3007,5001); 
insert into orders values (70008,5760,'2012-09-10',3002,5001); 
insert into orders values (70010,1983.2,'2012-10-10',3004,5006); 
insert into orders values (70003,2480.4,'2012-10-10',3009,5003); 
insert into orders values (70012,250.45,'2012-06-27',3008,5002); 
insert into orders values (70011,75.29,'2012-08-17',3003,5007); 
insert into orders values (70013,3045.6,'2012-04-25',3002,5001); 

表は正しく表示されています。私は他のテーブルに同じ挿入フォーマットを使用しましたが、このテーブルでは機能しません。なぜ私は助けてください。Oracle SQLリテラルは文字列と一致しませんか?データの挿入

これは、それがエラーのために私を与えるものである: エラーレポート - SQLエラー: - :でリテラル:ORA-01861「リテラルが書式文字列と一致しません」 *原因リテラルが書式文字列 01861. 00000と一致していません入力は、 のリテラルと同じ長さでなければなりません(先頭の空白を除く)。 "FX"修飾語がオンになっている場合、リテラルは正確に一致する必要があります。 余分な空白はありません。 *処置:リテラルに一致するように書式文字列を訂正してください。あなたのケースでは

+3

明示的な日付変換を使用する:to_date( '2012-10-05'、 'yyyy-mm-dd') '。または、セッションのデフォルトの日付フォーマットを設定します: 'ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-dd-mm'' – krokodilko

答えて

2

、私はあなたがこれを試してみてくださいと思う:

insert into orders values (70001,150.5,to_date('2012-10-05','yyyy-MM-dd'),3005,5002); 

それとも

insert into orders values (70001,150.5,'05-OCT-12',3005,5002); 

それとも、NLS_DATE_FORMAT

1

であなたの形式と仕事を保つことができるあなたがあなたのNLS_DATE_FORMATを設定する必要がありますyyyy-mm-dd

ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd' 

それ以外の場合、日付は1と認識されません。

関連する問題