wake-up-neo.com

ORA-01861: Literal stimmt nicht mit Formatzeichenfolge überein

Wenn ich versuche, dieses Snippet auszuführen:

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";

Ich bekomme:

ORA-01861: literal does not match format string

Es gibt kein Problem mit der Datenbankverbindung, da ich grundlegende SQL-Befehle ausführen kann.

Was ist das Problem mit dieser Aussage?

33
mcgoncu

Entfernen Sie das TO_DATE in der WHERE-Klausel

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

und ändern Sie den Code in

alarm_datetime

Der Fehler rührt von der Konvertierung einer Datumsspalte zu Datum her.

Erklärung hinzugefügt: Oracle konvertiert Ihre alarm_datetime in eine Zeichenfolge unter Verwendung des von nls abhängigen Datumsformats. Danach ruft es to_date mit Ihrer angegebenen Datumsmaske auf. Dies löst die Ausnahme aus.

32
Christian13467

Der Fehler bedeutet, dass Sie versucht haben, ein Literal mit einer Formatzeichenfolge einzugeben, die Länge der Formatzeichenfolge jedoch nicht mit der Länge des Literal übereinstimmt.

Eines dieser Formate ist falsch:

TO_CHAR(t.alarm_datetime, 'YYYY-MM-DD HH24:MI:SS')
TO_DATE(alarm_datetime, 'DD.MM.YYYY HH24:MI:SS')
8
OMG Ponies

Kurz vor dem Ausführen der Abfrage: alter session set NLS_DATE_FORMAT = "TT.MM.JJJJ HH24: MI: SS"; oder welches Format Sie der Datumsfunktion geben. Dies sollte den ORA-Fehler beheben

0
Vijay
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
sweta