我正在使用带有用户名系统的oracle 12c。我的问题是当我执行这个从oracle live sql site获取的insert语句时:
insert into emp
values(7788, 'SCOTT', 'ANALYST', 7566,to_date('13-JUL-87','dd-mm-rr') - 85,3000, null, 20);
它显示:
sql error ora-01858. 00000 - "a non-numeric character was found where a numeric was expected"
*Cause: The input data to be converted using a date format model was
incorrect. The input data did not contain a number where a number was
required by the format model.
*Action: Fix the input data or the date format model to make sure the
elements match in number and type. Then retry the operation.
在to_date(..)
之后这是什么-85答案 0 :(得分:2)
要处理日期,最好使用ANSI格式(date 'yyyy-mm-dd'
):
insert into emp values(7788, 'SCOTT', 'ANALYST', 7566, date '1987-07-13'- 85,3000, null, 20);
如果由于某种原因需要使用to_date
,则必须确保字符串的格式与您使用的格式掩码完全匹配:如果您的月份写为'JUL'
,则需要格式为掩码的'MON'
而不是'mm'
。 'mm'
与写为'07'
的月份匹配。
请注意,即使使用正确的格式掩码,这种写日期的方式也很危险,因为它基于数据库的语言。
-85
表示"减去85天"。