programing

ORA-01861: 리터럴이 형식 문자열과 일치하지 않음

powerit 2023. 2. 22. 23:17
반응형

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를 호출합니다.그러면 예외가 발생합니다.

이 오류는 형식 문자열과 함께 리터럴을 입력하려고 했지만 형식 문자열의 길이가 리터럴과 동일하지 않음을 의미합니다.

다음 형식 중 하나가 잘못되었습니다.

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 

쿼리를 실행하기 직전: 세션세트 NLS_DATE_FORMAT = "DD 를 변경합니다.MM.YYY HH24:MI:SS" 또는 날짜 함수에 정보를 제공하는 형식 중 하나를 선택합니다.그러면 ORA 오류가 수정됩니다.

이와 같은 단순한 뷰는 엔티티 프레임워크에서 실행되었을 때 ORA-01861 오류를 발생시켰습니다.

create view myview as 
select * from x where x.initialDate >= '01FEB2021'

이걸 고치려고 이런 짓을 한 거야

create view myview as 
select * from x where x.initialDate >= TO_DATE('2021-02-01', 'YYYY-MM-DD')

문제는 EF 날짜 구성이 Oracle과 동일하지 않다는 것입니다.

JPA를 사용하여 휴지 상태를 유지하려는 경우 엔티티가 java.util과 같은 날짜 열에 대해 정의된 필드에 대해 올바른 데이터 유형을 가지고 있는지 확인하십시오.String 대신 Date.

언급URL : https://stackoverflow.com/questions/1387917/ora-01861-literal-does-not-match-format-string

반응형