我在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
);
Run Code Online (Sandbox Code Playgroud)
而我正试图插入其中:
INSERT INTO Reserves VALUES(22, 101, '01-01-1998');
Run Code Online (Sandbox Code Playgroud)
但我收到错误:ORA-01843:不是有效月份
这是一个Oracle数据库.我不确定我的日期格式有什么问题.
ppe*_*rka 25
你想要的并不完全清楚,所以你可以尝试:
对于月 - 日 - 年格式:
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函数:TO_DATE
Bel*_*Bob 11
您可以使用该date关键字指定ANSI标准日期字符串:
INSERT INTO Reserves VALUES(22, 101, date '1998-01-01');
Run Code Online (Sandbox Code Playgroud)
在这种情况下,格式为YYYY-MM-DD,或1998年1月1日.
正如@Jody还提到的,
您可以通过在执行此代码之前更改会话的默认值INSERT:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';
您可以按照自己喜欢的顺序更改格式.
资料来源: dba-oracle.com
| 归档时间: |
|
| 查看次数: |
86862 次 |
| 最近记录: |