본문 바로가기
Error/Database

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

by 챠챠12 2024. 4. 3.
select  ROUND(MONTHS_BETWEEN(SYSDATE,to_date(replace(A.EMPL_BIRT,'.','')))/12) AS AGE 
from dual;

 

문제상황

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

String형을 DATE형으로 변환시켜 주거나 DATE형을 String 형으로 변환시켜 줘야 함.
이게 아니라,
알고 봤더니, empl_birt 에 2099년 11월 11일 의 데이터가 들어가 있어서 계속 해서 리터럴 형식 오류가 났다.

 

 

처리내역:

GPT한테 물어보니깐 ORDER BY 가 문제였다.

예, ORDER BY 절도 오류의 원인이 될 수 있습니다. ORDER BY 절에 사용되는 컬럼의 데이터 형식이 TO_DATE 함수의 형식과 일치하지 않으면 오류가 발생할 수 있습니다. 

만약 EMPL_BIRT 칼럼을 DATE 형식으로 변환한 후에 정렬하려고 한다면 ORDER BY 절도 수정해야 합니다. TO_DATE 함수를 사용하여 날짜를 변환한 후에 정렬하도록 ORDER BY 절을 수정할 수 있습니다.

다음은 ORDER BY 절을 수정한 예시입니다:

SELECT TO_DATE(EMPL_BIRT, 'YYYYMMDD') AS converted_date
FROM A
ORDER BY TO_DATE(EMPL_BIRT, 'YYYYMMDD');


위의 쿼리에서는 EMPL_BIRT 칼럼을 DATE 형식으로 변환한 후에 정렬하도록 ORDER BY 절을 수정하였습니다. 이를 통해 데이터의 형식이 일치하지 않아 발생할 수 있는 ORDER BY 관련 오류를 해결할 수 있습니다.

 

 

😊 잘못된 내용이 있다면 언제든지 댓글로 남겨주세요 😊

 

 

728x90
반응형
LIST

댓글