0

テーブルを作成し、テーブルに値を挿入する必要があります。テーブルは作成されていますが、値は挿入されません。ここに私のコードがあります-

CREATE TABLE CUSTOMER(
CID         number(20) not null primary key,        
FNAME       varchar2(50) not null,                  
MIDDLE      varchar2(50) null,
LNAME       varchar2(50) not null,
STREET      varchar2(50) not null,
CITY        varchar2(50) not null,
STATE       char(2) not null,
ZIP         varchar2(5) not null,
PHONE       varchar2(20) not null,
BIRTH_YR    date);

INSERT INTO CUSTOMER VALUES(
'1','john','paul','connor','Broad st','newark','nj','07103','2018643110','1992');

エラーが発生し続けます

[Error] Script lines: 12-14 ------------------------
ORA-01861: literal does not match format string
Script line 14, statement line 2, column 85 

誰か助けてくれませんか?私は何を間違っていますか?

4

2 に答える 2

3

必要な形式で年を挿入できるようにするには、テーブル定義を次のように変更する必要があります。

CREATE TABLE CUSTOMER(
CID         number(20) not null primary key,        
FNAME       varchar2(50) not null,                  
MIDDLE      varchar2(50) null,
LNAME       varchar2(50) not null,
STREET      varchar2(50) not null,
CITY        varchar2(50) not null,
STATE       char(2) not null,
ZIP         varchar2(5) not null,
PHONE       varchar2(20) not null,
BIRTH_YR    char(4) not null);

それ以外の場合は、Oracle データベースで受け入れられるデフォルトの形式でリテラルの日付値を指定する必要があります。このクエリを使用して、システムで受け入れられる日付形式を確認できます。

SELECT *
FROM nls_database_parameters
WHERE parameter LIKE '%DATE%'

私にとっては、次のように返されます。

NLS_DATE_FORMAT      |   DD-MON-RR
---------------------------------
NLS_DATE_LANGUAGE    |   AMERICAN

つまり、「1992」の代わりに'01-Jan-1992'BIRTH_YR列に次のような値を挿入する必要があります。

INSERT INTO CUSTOMER
    VALUES('1','john','paul','connor','Broad st','newark','nj','07103','2018643110', '01-Jan-1992');
于 2012-11-06T02:29:07.607 に答える
1

BIRTH_YRフィールドであるDATEことは、'yyyy-MM-dd' 形式、'1992-01-01' で指定する必要があります。

于 2012-11-06T02:24:36.077 に答える