oracle,插入数据,to_date('13-JUL-87')-51为啥提示“无效的月份”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle,插入数据,to_date('13-JUL-87')-51为啥提示“无效的月份”?相关的知识,希望对你有一定的参考价值。

oracle ,scott用户下emp表不小心删掉了,然后找来数据库自带的scott.sql文件,复制emp部分,运行,插入数据时有两条执行错误,如题描述。就是因为这两条的日期跟别的不一样,为什么出现这个错误呢?这该怎么解决呢?

参考技术A (7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87')-85,3000,NULL,20);

你可以修改为 jul 变为 7就可以拉,,你可以试试..追问

刚试过了,还是报同样的错误。jul 变为0 7也不行。话说to_date('13-JUL-87')-85这个用法还没有见过,不知道什么意思。不过,还是要谢谢你。

参考技术B to_date('08-JUL-87','dd-mon-yy','NLS_DATE_LANGUAGE = American')

如果你的数据本来就是英文第三个参数可以不要本回答被提问者采纳
参考技术C INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87','dd-mon-rr','nls_date_language=American')-51,1100,NULL,20);
能提交就是不知道是否正确,给后来人参考。

如何在oracle表中插入系统时间

参考技术A 有关日期的操作中,更多的是涉及系统当前时间,用sysdate表示即可,如果是插入其他非系统时间的日期类型数据的话,用to_date转换再插入就可以了。
例:1 insert into 表(c_date) values(to_date('20120927 20:09:47','YYYYMMDD HH24:MI:SS'));
另外:有些日期字段中会有一些默认数据,所以to_date还是挺有用的。如:
1 startdate date DEFAULT to_date('2000-01-01','yyyy-mm-dd')!
参考技术B 应该使用函数sysdate

以上是关于oracle,插入数据,to_date('13-JUL-87')-51为啥提示“无效的月份”?的主要内容,如果未能解决你的问题,请参考以下文章

如何在oracle表中插入系统时间

ORACLE 存储过程插入数据排序混乱

Oracle数据库插入日期型数据的方法

oracle中将原有的年、月、日个字段整合成日期形式插入数据库?

oracle todate函数

怎样手动插入时间 oracle