sql – Oracle插入失败:不是有效的月份
发布时间:2020-12-12 05:58:14 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试从包含日期列的.xlsx电子表格导入数据.在这些列中,日期以DD-MON-YY格式显示(例如:20-AUG-12). 当我运行导入向导时,一切都很顺利,直到我必须精确列/字段映射.我有一个免责声明说所选格式与表字段定义不匹配(我的字段是日期字段).插入脚本的示例: I
我正在尝试从包含日期列的.xlsx电子表格导入数据.在这些列中,日期以DD-MON-YY格式显示(例如:20-AUG-12).
当我运行导入向导时,一切都很顺利,直到我必须精确列/字段映射.我有一个免责声明说所选格式与表字段定义不匹配(我的字段是日期字段).插入脚本的示例: INSERT INTO simulation (simulation_id,simulation_name,sim_start_date,sim_end_date,status,last_run_date,moddat,modusr,notification_email) VALUES (251.0,'Proposal Test',To_date('01-DEC-11','DD-MON-YY'),To_date('31-DEC-11','C',To_date('09-AUG-12','Brent Weintz','bweintz@carlsonwagonlit.com'); 当我尝试运行此查询时,出现以下错误:
正如你所看到的,格式是匹配的,我无法弄清楚问题出在哪里……任何想法的人? 编辑:我的日期语言参数设置为“法语”.我可以将其更改为“AMERICAN”吗? 解决方法虽然您使用to_date并更正格式模型以显式转换为日期,但仍然获得ORA-01843似乎问题与NLS_DATE_LANGUAGE有关.阅读更多关于它 here.SQL> DROP TABLE t PURGE; Table dropped. SQL> CREATE TABLE t(A DATE); Table created. SQL> ALTER SESSION SET NLS_DATE_LANGUAGE='FRENCH'; Session altered. SQL> SELECT * FROM nls_session_parameters WHERE parameter = 'NLS_DATE_LANGUAGE'; PARAMETER VALUE -------------------- ---------- NLS_DATE_LANGUAGE FRENCH SQL> INSERT INTO t VALUES(to_date('01-jan-2012','dd-mon-yyyy')); INSERT INTO t VALUES(to_date('01-jan-2012','dd-mon-yyyy')) * ERROR at line 1: ORA-01843: not a valid month 所以,我遇到错误的NLS_DATE_LANGUAGE错误.我们把它设置为AMERICAN. SQL> ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; Session altered. SQL> SELECT * FROM nls_session_parameters WHERE parameter = 'NLS_DATE_LANGUAGE'; PARAMETER VALUE -------------------- ---------- NLS_DATE_LANGUAGE AMERICAN SQL> INSERT INTO t VALUES(to_date('01-jan-2012','dd-mon-yyyy')); 1 row created. SQL> 更新OP的编辑问题 –
从documentation开始,以下是设置NLS参数的方法.请注意优先顺序. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |