ORA-01861: 字面意义与格式字符串不匹配

当我试图执行这个片段时。

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

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

并将代码改为

alarm_datetime

该错误来自于日期列的to_date转换。

添加的解释: Oracle使用其nls依赖的日期格式将你的alarm/datetime转换为字符串。在这之后,它用你提供的日期掩码调用to_date。这就出现了异常。

评论(0)

该错误意味着你试图输入一个带有格式化字符串的字头,但格式化字符串的长度与字头的长度不一样。

其中一个格式是不正确的。

TO_CHAR(t.alarm_datetime, 'YYYY-MM-DD HH24:MI:SS')
TO_DATE(alarm_datetime, 'DD.MM.YYYY HH24:MI:SS')
评论(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 
评论(0)