Sql oracle中日期的插入格式是什么?

Sql oracle中日期的插入格式是什么?,sql,oracle,Sql,Oracle,下面的代码给出了错误: “ORA-01821:无法识别日期格式” 但是为什么呢 使用'DD-MON-RR'或'DD-MM-rrrrr'而不是'DD-MMM-YY'作为日期格式。 在您的情况下,最好使用带有rr的日期格式,而不是yy。此格式与2k年(千年)问题有关。例如,当你输入96时,你会得到1996(本世纪下半叶“50-99之间的一年”),当你输入05时,你会得到2005(本世纪下半叶“00-49之间的一年”)MMM。您需要MON。但是,我会使用DATE关键字: VALUES('O1900

下面的代码给出了错误:

“ORA-01821:无法识别日期格式”

但是为什么呢




使用
'DD-MON-RR'
'DD-MM-rrrrr'
而不是
'DD-MMM-YY'
作为日期格式。
在您的情况下,最好使用带有
rr
的日期格式,而不是
yy
。此格式与2k年(千年)问题有关。例如,当你输入
96
时,你会得到
1996
(本世纪下半叶“50-99之间的一年”),当你输入
05
时,你会得到
2005
(本世纪下半叶“00-49之间的一年”)

MMM
。您需要
MON
。但是,我会使用
DATE
关键字:

VALUES('O19001', DATE '1996-01-12','C00001', 'F', 'N', 'S00001', DATE '1996-01-20', 'IN PROCESS');

ORA-1821的直接原因是日期格式错误:对于值
1996年1月12日
,掩码应该是
DD-MON-YY
,而不是
DD-MMM-YY

在此之后,您的语句将正常工作,但它包含两个其他错误。首先,我怀疑你是否提到了2096年,所以你应该使用四位数格式而不是两位数。接下来,它将与一个NLS设置一起工作,而与其他日期语言相关的设置一起失败


这就是为什么在您的情况下,最好的决定是使用日期文字并将日期值写为
date'1996-01-12'
而不使用任何to_date

检查NLS设置或使用独立于语言的日期格式,例如DD-MM-YYYY,现在是开始使用4位数年份的时候了:-)在回答您的问题标题时,没有“格式”插入日期时,它只需要是有效日期。(编号的插入格式是什么?)此外,那些
VARCHAR
CHAR
列都应该是
VARCHAR2
,这是Oracle中的标准字符串类型。@AkashRc抱歉,我一时冲动犯了错误。现在,没关系。在“DD-MON-YY”中,需要2096年,而我想要1996年,但是谢谢,你的回答帮助了我:)@AkashRc在这种情况下,你最好使用带有
rr
的日期格式,而不是
YY
CREATE TABLE SALES_ORDER_C_B1_027
(
    ORDER_NO VARCHAR(6) PRIMARY KEY,
    CLIENT_NO VARCHAR(6),
    ORDER_DATE DATE,
    DELYADDR VARCHAR(25),
    SALESMAN_NO VARCHAR(6),
    DELYTYPE CHAR(1) DEFAULT 'F',
    BILLYN CHAR(1),
    DELYDATE DATE, 
    ORDER_STATUS VARCHAR(10),
    CHECK(ORDER_NO LIKE 'O%'),
    CHECK(DELYTYPE IN('P','F')),
    CHECK(DELYDATE>ORDER_DATE),
    CHECK(ORDER_STATUS IN('IN PROCESS','FULFILLED','BACK ORDER','CANCELLED')),
    FOREIGN KEY (CLIENT_NO) REFERENCES CLIENT_MASTER_C_B1_027(CLIENT_NO),
    FOREIGN KEY (SALESMAN_NO) REFERENCES SALESMAN_MASTER_C_B1_027(SALESMAN_NO)
);
VALUES('O19001', DATE '1996-01-12','C00001', 'F', 'N', 'S00001', DATE '1996-01-20', 'IN PROCESS');