2013-04-20 42 views
0

我在SQL編程新tablle插入日期,我創建了一個表,其中我想插入AA日期像不能在我的Oracle SQL

create table person (
    PANr integer not null, 
    name Varchar(10), 
    HNr integer not null, 
    stuff_date date, 
    constraint P_NR primary key (PANr) 
); 

INSERT INTO Personen值( '4711', 'Andreas''15', '1958年10月31日');

表工程的創建,但插入命令給出了這樣的錯誤:

SQL Error: ORA-01843: not a valid month 
    01843. 00000 - "not a valid month" 

任何想法有什麼錯在這裏? 在此先感謝

+0

嘗試插入日期作爲默認日期格式「DD-MON-YY」格式即(31-10-1958) – 2013-04-20 13:50:38

+0

不要使用字符串,請使用日期文字:'date'1958-10-31''。 http://xkcd.com/1179/ – 2013-04-20 19:24:20

回答

4

使用TO_DATE('31.10.1958', 'DD.MM.YYYY')

+0

謝謝你的回答,但我認爲有一個cmd,我可以在我的代碼的開始,所以我不必每次使用to_date插入日期,任何想法這可能如何工作? – Engine 2013-04-21 09:10:28

2

您還有其他錯誤。

insert into person 
values 
('4711','Andreas''15','31.10.1958'); 

首先,您正在引用您的整數值。這可能會或可能不會導致問題,但這不是一個好主意。其次,你需要安德烈亞斯和15

0

之間的逗號如果你不想使用TO_DATE功能,您可以使用以下方法:

ALTER SESSION SET nls_date_format='yyyy-mm-dd'; 

現在,你的插入語句應該是這樣的:

INSERT INTO PERSONEN VALUES('4711','Andreas','15','1958-10-31'); 

如果您想更具體一些,你可以定義日期格式是這樣的:

ALTER SESSION SET nls_date_format='yyyy-mm-dd hh24:mi:ss'; 

P.S.請注意@Dan Bracuk的答案。