ORA-01861: literal ne correspond pas à la chaîne de format

Lorsque j'essaie d'exécuter ce morceau de code:

cmd.CommandText = "SELECT alarm_id,definition_description,element_id,
    TO_CHAR (alarm_datetime, 'YYYY-MM-DD HH24:MI:SS'),severity,
    problem_text,status FROM aircom.alarms 
    WHERE status = 1 and 
    TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') > TO_DATE ('07.09.2008 
    09:43:00', 'DD.MM.YYYY HH24:MI:SS') 
    order 
    by ALARM_DATETIME desc";

j'obtiens:

ORA-01861: literal does not match format string

il n'y a pas de problème avec la connexion à la base de données parce que je peux exécuter des commandes SQL de base.

Quel est le problème avec cette déclaration?

27
demandé sur a_horse_with_no_name 2009-09-07 11:00:48

4 réponses

supprimer le TO_DATE dans la clause WHERE

TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS')

et changez le code en

alarm_datetime

l'erreur provient de la conversion to_date d'une colonne date.

Ajout De L'Explication: Oracle convertit votre alarm_datetime en une chaîne de caractères en utilisant son format de date dépendant de nls. Après cela, il appelle to_date avec votre date fournie masque. Cela jette l'exception.

26
répondu Christian13467 2009-10-15 13:00:58

L'erreur signifie que vous avez essayé d'entrer un littéral avec une chaîne de format, mais la longueur de la chaîne de format n'était pas de la même longueur que le littéral.

un de ces formats est incorrect:

TO_CHAR(t.alarm_datetime, 'YYYY-MM-DD HH24:MI:SS')
TO_DATE(alarm_datetime, 'DD.MM.YYYY HH24:MI:SS')
7
répondu OMG Ponies 2009-09-07 07:11:41
SELECT alarm_id
,definition_description
,element_id
,TO_CHAR (alarm_datetime, 'YYYY-MM-DD HH24:MI:SS')
,severity
, problem_text
,status 
FROM aircom.alarms 
WHERE status = 1 
    AND TO_char (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') > TO_DATE ('07.09.2008  09:43:00', 'DD.MM.YYYY HH24:MI:SS') 
ORDER BY ALARM_DATETIME DESC 
0
répondu sweta 2012-10-20 08:41:34

juste avant d'exécuter la requête: modifier le jeu de session NLS_DATE_FORMAT = " DD.MMM.YYYY HH24: MI: SS"; ou quel que soit le format dans lequel vous donnez les informations à la fonction date. Cela devrait corriger l'erreur ORA

0
répondu Vijay 2016-09-09 21:25:30