본문 바로가기
Database/Oracle

[Error] 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일 의 데이터가 들어가 있어서 계속 해서 리터럴 형식 오류가 났다.ㅠ

 

ORDER BY 가 문제였다.

GPT한테 물어보니깐

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

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

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

```sql
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 관련 오류를 해결할 수 있습니다.

 

LIST

댓글