insert all
into employee_leave (emp_id ,leave_id,leave_date_from,leave_date_to,loss_of_pay_days)
values('EA12345',1, to_date('07-JUL-2012', 'DD-Mon-YY'), to_date('09-JUL-2012','DD-Mon-YY'),0)
select * from dual;
我想在To_Date('07 -JUL-2012','DD-Mon-YY')格式中插入日期,同时 我试图插入但显示错误。如何纠正这个?
答案 0 :(得分:1)
您不需要INSERT ALL或DUAL来插入单行;你可以简单地使用:
INSERT INTO employee_leave(
emp_id,
leave_id,
leave_date_from,
leave_date_to,
loss_of_pay_days
)
VALUES (
'EA12345',
1,
TO_DATE('07-JUL-2012', 'DD-Mon-YYYY'),
TO_DATE('09-JUL-2012', 'DD-Mon-YYYY'),
0
);
我编辑了格式蒙版以适应日期字符串;另请注意,这依赖于NLS语言,而对于日期使用ANSI标准会更安全:
INSERT INTO employee_leave(
emp_id,
leave_id,
leave_date_from,
leave_date_to,
loss_of_pay_days
)
VALUES (
'EA12345',
1,
date '2012-07-07',
date '2012-07-09',
0
);
答案 1 :(得分:0)
也许你的nls格式化不是英语。
我的意思是尝试这个来理解月份名称:
select to_char(to_date('20160701','yyyymmdd') ,'Mon') from dual
如果结果是'Jul'就可以了,但是如果是'Tem'(土耳其语)你就不能插入那个日期,因为它会出现这个错误:
ORA-01843:无效月份
答案 2 :(得分:0)
在您的日期中,您提供了一个4位数的年份,但您的日期模式指定了2位数的年份。将insert语句更改为
insert all
into employee_leave
(emp_id, leave_id, leave_date_from,
leave_date_to, loss_of_pay_days)
values
('EA12345', 1, to_date('07-JUL-2012', 'DD-MON-YYYY'),
to_date('09-JUL-2012','DD-MON-YYYY'), 0)
select * from dual
祝你好运。