toda to_date termina sqlstate sqldataexception ora not máscara literal formato fecha fdpstp failed error entrada due does datos convertir con coincide cadena antes sql oracle oracle10g ora-01861

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