ORA-01843:没有有效的月份错误 - 尝试更改日期格式但无法正常工作

时间:2016-08-05 10:18:48

标签: oracle

当我尝试在Oracle上运行代码时会出现此错误,但我不确定原因。我认为这与日期格式有关,任何人都可以帮忙吗?

INSERT INTO Subscription (Gym_ID, Member_ID, Current_or_Old_Susbcription, Susbcription_StartDate, Subscription_EndDate, Susbcription_Cost)

VALUES (1, 2, 'Current', '01/01/2016', '31/12/2016', '480');

2 个答案:

答案 0 :(得分:2)

使用date关键字和ISO标准格式:

INSERT INTO Subscription (Gym_ID, Member_ID, Current_or_Old_Subscription, Subscription_StartDate, Subscription_EndDate, Subscription_Cost)
    VALUES (1, 2, 'Current', DATE '2016-01-01', DATE '2016-12-01', '480');

这使您与服务器上的任何特殊设置隔离开来。

答案 1 :(得分:2)

' 01/01/2016'和' 31/12/2016'字符串不是日期。所以DBMS必须转换。您没有使用转换功能(to_date),因此DBMS必须使用默认设置。可能是它认为31而不是12是月。请改用日期文字:

INSERT INTO Subscription (Gym_ID, Member_ID, Current_or_Old_Subscription,
                          Subscription_StartDate, Subscription_EndDate, Subscription_Cost)
VALUES (1, 2, 'Current', date'2016-01-01', date'2016-12-31', '480');