Когда я пытаюсь выполнить этот фрагмент:
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";
Я получаю:
ORA-01861: literal does not match format string
Нет никаких проблем с подключением к базе данных, потому что я могу выполнять команды SQL.
В чем проблема с этим утверждением?
Удалить даты в предложении where
TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS')
и измените код
alarm_datetime
Ошибка происходит от преобразования даты в столбце дата.
Добавлено пояснение: Оракул преобразует сигнал_datetime в строку, используя его НЛС зависит формат даты. После этого он называет даты с предоставленной датой маска. Это бросает исключение.
Ошибка означает, что вы пытались ввести символьную строку формата, но длина строки формат был не такой же длины, как литерал.
Одним из таких форматов является неверным:
TO_CHAR(t.alarm_datetime, 'YYYY-MM-DD HH24:MI:SS')
TO_DATE(alarm_datetime, 'DD.MM.YYYY HH24:MI:SS')
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