ORA-01861 리터럴이 형식 문자열과 일치하지 않음 에러가 안나다가 갑자기 납니다.
ORA-01861 리터럴이 형식 문자열과 일치하지 않음 에러가 안나다가 갑자기 납니다.
동일한 쿼리고 안에 들어있는 데이터 타입도 똑같은거같은데 안나다가 갑자기 나기 시작했습니다.
심지어 동일한 varchar2 타입에 칼럼이 두개가 있는데
A 칼럼은 에러가 나고 B 칼럼은 에러가 나지 않습니다.
TABLE 이 UESR 라고 치면
UESR에 STARTDATE, OUTDATE 칼럼이 2개 있는 형식입니다.
이때 SELECT STARTDATE WHERE STARTDATE = to_date(sysdate-7, 'YY-MM-dd');
이건 에러가 나지 않습니다. varchar2 타입인 칼럼인데도 말이죠
거꾸로 SELECT STARTDATE WHERE STARTDATE = to_char(sysdate-7, 'YY-MM-dd');
하는것도 에러가 나지 않습니다. 이건 당연한것같습니다.
그런데 이상하게
SELECT OUTDATE WHERE OUTDATE = to_char(sysdate-7, 'YY-MM-dd');
는 에러나지않지만
SELECT OUTDATE WHERE OUTDATE = to_date(sysdate-7, 'YY-MM-dd');
이건 에러납니다. varchar2 타입인 칼럼이라 에러가 나는건 이해할수있습니다.
이상한건
몇달동안 한번도 에러난적이 없단것과
동일한 구조의 칼럼인 startdate 는 에러가 안난다는것과
startdate는 to_date건 to_char건 에러가 안난다는겁니다.
바꾸는건 그냥 to_date로 되어있던건 tochar 로 바꾸면 될것같은데....도대체
저 3개의 이유를 모르겠습니다.
답변 부탁드립니다!
안녕하세요!
변환속도 (to date로 변환하는 속도와 to char로 변환하는 속도차이)의 차이때문에
그동안 에러없다가 생기는 경우일수도 있겠네요.
1번의 경우와 같이 데이터가 적을때는 문제가 안되지만 데이터 처리가 많아지면서 발생할 수 있는 에러일수도 있겠습니다.
역시 같은 이유로 생각되며
1) 처리되는 데이터량과 속도를 테스트 해보시길바랍니다.
2) 속도가 현저히 떨어져 발생한다면 튜닝을 해야할 시점이라 생각됩니다.