INSERT ALL
into instructor values (
835, 'SPARKS', 4000 , 200, 978, '16-12-1984')
into instructor values (
978, 'STEEL', 5000 , 250, 222, '16-01-1980')
它是:
INSERT ALL
into instructor values (
835, 'SPARKS', 4000 , 200, 978, '16-DEC-1984')
into instructor values (
978, 'STEEL', 5000 , 250, 222, '16-JAN-1980')
表格EXISTS和SETUP CORRECTLY。 错误消息显示ORA-01843:不是有效月份。 我在哪里做错了?
谢谢
答案 0 :(得分:2)
您为 DATE 类型列提供了字符串。
在这种情况下,Oracle会根据NLS_DATE_FORMAT
隐式将字符串转换为日期 - 请参阅此sqlfiddle example
正确的方法是Valex suggested或者像这样:
INSERT ALL
into instructor values (
835, 'SPARKS', 4000 , 200, 978,date '1984-12-16')
into instructor values (
978, 'STEEL', 5000 , 250, 222, date '1980-01-16')
SELECT * from DUAL;
答案 1 :(得分:1)
使用月份作为3个字母的字符而不是数字而不是12个使用dec
答案 2 :(得分:1)
只需使用TO_DATE将字符串转换为日期
INSERT ALL
into instructor values (
835, 'SPARKS', 4000 , 200, 978,TO_DATE('16-12-1984','DD-MM-YYYY'))
into instructor values (
978, 'STEEL', 5000 , 250, 222,TO_DATE('16-01-1980','DD-MM-YYYY'))
SELECT * from DUAL;
答案 3 :(得分:0)
您试图在不提及格式的情况下插入DATE,因此oracle使用其默认的DATE格式DD-MON-YYYY
您可以试用SQL Fiddle