我在sql中有一个表如下:
CREATE TABLE Reserves(
sid INTEGER,
bid INTEGER,
day DATE,
PRIMARY KEY (sid, bid, day),
FOREIGN KEY (sid) REFERENCES Sailors,
FOREIGN KEY (bid) REFERENCES Boats
);
我想插入其中:
INSERT INTO Reserves VALUES(22, 101, '01-01-1998');
但我收到错误:ORA-01843:不是有效月份
这是一个Oracle数据库。我不确定我的日期格式有什么问题。
答案 0 :(得分:22)
你想要的并不完全清楚,所以你可以尝试:
对于月 - 日 - 年格式:
INSERT INTO Reserves VALUES(22, 101, TO_DATE('01-01-1998','MM-DD-YYYY'));
对于日 - 月 - 年格式:
INSERT INTO Reserves VALUES(22, 101, TO_DATE('01-01-1998','DD-MM-YYYY'));
另外,建议阅读:Oracle functions: TO_DATE
答案 1 :(得分:10)
您可以使用date
关键字指定ANSI标准日期字符串:
INSERT INTO Reserves VALUES(22, 101, date '1998-01-01');
在这种情况下,格式为YYYY-MM-DD,或1998年1月1日。
答案 2 :(得分:6)
正如@Jody所提到的,
您可以在INSERT
之前执行此代码一次更改会话的默认值:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';
您可以按照自己喜欢的顺序更改格式。
来源: dba-oracle.com
答案 3 :(得分:0)
试试'1998-01-01'。
我相信oracle的默认日期格式是yyyy-mm-dd。您可以使用alter session set nls_date_format ='mm-dd-yyyy'
更改会话的默认值请注意,大多数客户都可以将此设置为您永久喜欢的内容
答案 4 :(得分:0)
您还可以尝试以下查询格式:
INSERT INTO Reserves VALUES(22, 101, DATE '01-01-1998');
DATE
关键字将以下字符串解释为日期。