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 타입인 칼럼이라 에러가 나는건 이해할수있습니다.

이상한건

  1. 몇달동안 한번도 에러난적이 없단것과

  2. 동일한 구조의 칼럼인 startdate 는 에러가 안난다는것과

  3. startdate는 to_date건 to_char건 에러가 안난다는겁니다.

바꾸는건 그냥 to_date로 되어있던건 tochar 로 바꾸면 될것같은데....도대체

저 3개의 이유를 모르겠습니다.

답변 부탁드립니다!

    1개의 답변이 있어요!

    • 안녕하세요!

      1. 변환속도 (to date로 변환하는 속도와 to char로 변환하는 속도차이)의 차이때문에

        그동안 에러없다가 생기는 경우일수도 있겠네요.

      1. 1번의 경우와 같이 데이터가 적을때는 문제가 안되지만 데이터 처리가 많아지면서 발생할 수 있는 에러일수도 있겠습니다.

      2. 역시 같은 이유로 생각되며

        1) 처리되는 데이터량과 속도를 테스트 해보시길바랍니다.

        2) 속도가 현저히 떨어져 발생한다면 튜닝을 해야할 시점이라 생각됩니다.