无法在SQL表中插入日期

时间:2013-10-04 12:54:48

标签: sql oracle date insert ora-01861

我创建了下表:

CREATE TABLE match(
match_id NUMBER(4,0), 
match_date DATE, 
attendance NUMBER(6,0), 
stadium_name VARCHAR2(40), 
tournament_id NUMBER(3,0),
CONSTRAINT match_id_pk PRIMARY KEY(match_id),
CONSTRAINT match_stadium_name_fk FOREIGN KEY(stadium_name) 
           REFERENCES stadium(stadium_name));

我尝试插入以下行:

INSERT INTO match VALUES(1001, '20130515', 90000, 'American Airlines Arena', 001);

我发现的一切都告诉我格式是YYYYMMDD。但是我一直得到ORA-01861:文字与格式字符串不匹配。

使用后(DESCRIBE match),它说长度只有7.我认为它应该是10。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

嗯,格式YYYYMMDD可能不是数据库日期格式(您应该查找NLS_DATE_FORMAT以查看db日期格式是什么)。

但是在系统级别有一个NLS_DATE_FORMAT,在会话级别有一个(可能是其他的)NLS_DATE_FORMAT

您可以使用TO_DATE并指定格式来实现您想要的目标:

INSERT INTO match VALUES(1001, TO_DATE('20130515', 'YYYYMMDD'), 90000, 'American Airlines Arena', 001);