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はalarm_datetimeをnlsに依存する日付フォーマットを使用して文字列に変換します。この後、提供された日付マスクでto_dateを呼び出します。これにより、例外が発生します。

解説 (0)

このエラーは、リテラルに書式文字列を入力しようとしたが、書式文字列の長さがリテラルと同じ長さではなかったことを意味します。

これらのフォーマットのうちの1つが正しくありません。

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)