sql – Oracle插入失败:不是有效的月份

我正在尝试从包含日期列的.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');

当我尝试运行此查询时,出现以下错误

ORA-01843: not a valid month
01843. 00000 – “not a valid month”

正如你所看到的,格式是匹配的,我无法弄清楚问题出在哪里……任何想法的人?

编辑:我的日期语言参数设置为“法语”.我可以将其更改为“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的编辑问题 –

My date language paramater is set to “french”. Can I change it to “AMERICAN” ?

documentation开始,以下是设置NLS参数的方法.请注意优先顺序.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...