ORA-01861 : le littéral ne correspond pas à la chaîne de format.

Quand j'essaie d'exécuter ce snippet :

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 de connexion à la base de données car je peux exécuter des commandes SQL de base.

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

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 de date.

Explication ajoutée: Oracle convertit votre alarm_datetime en une chaîne de caractères en utilisant son format de date dépendant de NLS. Ensuite, il appelle to_date avec le masque de date que vous avez fourni. L'exception est alors levée.

Commentaires (0)

Cette erreur signifie que vous avez essayé de saisir un littéral avec une chaîne de format, mais que la longueur de la chaîne de format n'était pas la même que celle du littéral.

L'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')
Commentaires (1)
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 
Commentaires (0)