ORA-01861:文字与格式字符串不匹配

34 sql oracle oracle10g 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";
Run Code Online (Sandbox Code Playgroud)

我明白了:

ORA-01861: literal does not match format string
Run Code Online (Sandbox Code Playgroud)

数据库连接没有问题,因为我可以执行基本的SQL命令.

这个陈述有什么问题?

Chr*_*467 32

删除WHERE子句中的TO_DATE

TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS')
Run Code Online (Sandbox Code Playgroud)

并将代码更改为

alarm_datetime
Run Code Online (Sandbox Code Playgroud)

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

添加说明: Oracle使用其依赖于nls的日期格式将alarm_datetime转换为字符串.在此之后,它使用您提供的日期掩码调用to_date.这引发了异常.


OMG*_*ies 7

该错误意味着您尝试输入带有格式字符串的文字,但格式字符串的长度与文字的长度不同.

其中一种格式不正确:

TO_CHAR(t.alarm_datetime, 'YYYY-MM-DD HH24:MI:SS')
TO_DATE(alarm_datetime, 'DD.MM.YYYY HH24:MI:SS')
Run Code Online (Sandbox Code Playgroud)

  • 你提出一个例子并说它的一半是不正确的,答案有什么用? (3认同)