sql - to_date - ORA-01861: el literal no coincide con la cadena de formato
sql error 1861 sqlstate 22008 (4)
Cuando intento ejecutar este fragmento:
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";
Yo obtengo:
ORA-01861: literal does not match format string
No hay ningún problema con la conexión de la base de datos porque puedo ejecutar comandos SQL básicos.
¿Cuál es el problema con esta declaración?
El error significa que intentó ingresar un literal con una cadena de formato, pero la longitud de la cadena de formato no era la misma que la literal.
Uno de estos formatos es incorrecto:
TO_CHAR(t.alarm_datetime, ''YYYY-MM-DD HH24:MI:SS'')
TO_DATE(alarm_datetime, ''DD.MM.YYYY HH24:MI:SS'')
Elimine TO_DATE en la cláusula WHERE
TO_DATE (alarm_datetime,''DD.MM.YYYY HH24:MI:SS'')
y cambiar el código a
alarm_datetime
El error proviene de la conversión a_date de una columna de fecha.
Explicación agregada: Oracle convierte su alarm_datetime en una cadena usando su formato de fecha dependiente nls. Después de esto, llama a to_date con la máscara de fecha proporcionada. Esto arroja la excepción.
Justo antes de ejecutar la consulta: alterar el conjunto de sesión NLS_DATE_FORMAT = "DD.MM.YYYY HH24: MI: SS"; o cualquier formato que esté dando la información a la función de fecha. Esto debería arreglar el error ORA
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