2017-04-06 2 views
0

J'essaie d'obtenir ma tête autour du message d'erreur que je reçois quand je parse un paramètre de date/heure tels que:cx_Oracle.DatabaseError: ORA-01858: Date Heure Format faux

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

par opposition à :

'29-SEP-1999' 

Le premier n'insère pas dans le tableau, ce dernier le fait. Je soupçonne qu'il y a un problème avec les paramètres NLS, mais les paramètres ne sont pas si claires quant au format d'une date/heure est permise, et donc ce que j'ai besoin de reformater dans la date/heure, dans mon code python. Mon réglage actuel de SNA sur SQL Developer sont:

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

Voici mon code:

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

NLS Paramètre sur votre développeur SQL ne jouera aucun rôle, pouvez-vous poster le code réel où vous insérez la date. –

+0

Message original modifié, voir ci-dessus – pymat

+0

au lieu de ''29 -SEP-1989 14: 00: 00'' essayer' TO_DATE ('29 -SEP-1989 14:00:00 ',' jj-mon-aaaa hh24: mi : ss ') –

Répondre

0

Vous devez utiliser ceci:

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

Si vous voulez vraiment insérer la chaîne sans spécifier le format, vous pouvez émettre ce qui suit:

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

Vous pouvez également convertir cette chaîne en une instance datetime.datetime dans Python, puis lier simplement cette instruction à votre instruction SQL.