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
'Database > Oracle' 카테고리의 다른 글
Oracle JOB SCHEDULER 확인 (0) | 2024.04.22 |
---|---|
[Oracle/SQL] 집계함수 (GROUP BY, HAVING) (0) | 2022.09.13 |
[Oracle/SQL] SUBSTR (문자열 자르기) / INSTR (문자열 위치) 함수 사용 (0) | 2022.06.03 |
[SQL] 동적 쿼리 , 정적 쿼리 (0) | 2022.03.18 |
[Oracle/SQL] table left outer join (0) | 2022.03.07 |
댓글