cx_Oracle.DatabaseError:ORA-01858:日期时间错误格式

问题描述:

我想,当我分析日期/时间参数如让我周围我收到错误消息头:cx_Oracle.DatabaseError:ORA-01858:日期时间错误格式

'29-SEP-1999 14:00:00' 

,而不是:

'29-SEP-1999' 

前者不插入到表中,后者是。我怀疑NLS设置存在问题,但设置不太清楚日期/时间允许的格式,因此我需要在日期/时间重新格式化我的Python代码。我目前对SQL Developer的NLS设置有:

Date format: DD.MM.RR HH24:MI:SSXFF 

这里是我的代码:

sql_insert = 'insert into sms_temtplate_test (date_sms, result_sms, msgid, msgparts) values (:1, :2, :3, :4)' 
smsreport_text_new = ('29-SEP-1989 14:00:00', 'success', '2D67A865FBHFA25A9261C75E8D2F0F2B ', 1) 

cursor.execute(sql_insert, smsreport_text_new) 
connection.commit() 
cursor.close() 
connection.close() 
+0

您的SQL Developer中的NLS设置将不起任何作用,您可以发布插入日期的实际代码。 –

+0

修改原始文章,参见上面的 – pymat

+0

而不是''29 -SEP-1989 14:00:00''尝试'TO_DATE('29 -SEP-1989 14:00:00','dd-mon-yyyy hh24:mi :ss')' –

你应该使用这样的:

to_date('29-sep-1999 14:00:00', 'dd-mon-yyyy hh24:mi:ss')

如果你真的想插入字符串,而不指定格式,您可以发出以下内容:

alter session set nls_date_format = 'dd-mon-yyyy hh24:mi:ss'

您也可以将该字符串转换为Python中的datetime.datetime实例,然后将其绑定到您的SQL语句。