SQL"不是有效月份"

Mat*_*att 9 sql oracle

我在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日.


Ham*_*med 6

正如@Jody还提到的,
您可以通过在执行此代码之前更改会话的默认值INSERT:

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';

您可以按照自己喜欢的顺序更改格式.

资料来源: dba-oracle.com