월급루팡

오류 코드: ORA-01898

우주코딩 2022. 6. 7. 17:37

오류 코드: ORA-01898

오류 코드: ORA-01898
설명: 정밀도 지정자가 너무 많습니다
원인: 날짜를 자르거나 반올림하는 동안 날짜 형식 그림에서 추가 데이터가 발견되었습니다.
조치: 날짜 형식 그림의 구문을 확인하고 다시 시도하십시오.

예제

order_date 컬럼 (DATE 타입) 을 between을 써서 조건을 줄 때
where trunc(order_date, 'yyyymmdd') between #{fromDate}(문자열 'yyyymmdd') and #{toDate}(문자열 'yyyymmdd')
이렇게만 걸 경우 나오는 에러

비교를 하려면 똑같은 데이터 형으로 변환한 뒤에 조건을 걸어야한다.

where trunc(to_char(order_date, 'yyyymmdd')) between #{fromDate}(문자열 'yyyymmdd') and #{toDate}(문자열 'yyyymmdd')

혹은 
wherer trunc(TO_DATE(order_date, 'YYYY-MM-DD')) between to_date(#{fromDate}(문자열 'yyyymmdd') , 'yyyymmdd') and to_date(#{toDate}(문자열 'yyyymmdd') , 'yyyymmdd')