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()
答
你应该使用这样的:
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语句。
您的SQL Developer中的NLS设置将不起任何作用,您可以发布插入日期的实际代码。 –
修改原始文章,参见上面的 – pymat
而不是''29 -SEP-1989 14:00:00''尝试'TO_DATE('29 -SEP-1989 14:00:00','dd-mon-yyyy hh24:mi :ss')' –