위와 같이 쿼리 수행시 ORA-01843 지정한 월이 잘못되었다는 오류가 발생하는데 무엇때문인지 알고 싶습니다 이상한건 예로 A DB에서는 잘 되는데 B DB에서는 안된다는 겁니다. 도대체 무슨 차이가 있는걸까요.. 궁금합니다
by 비니
[2011.12.20 10:58:20]
아마도 nls_date_format 형식이 달라서 그럴 수도 있을거에요.
select sysdate from dual; 로 확인시
년월일 순으로 나오지 않고 , 월일년 뭐 이렇게 나라마다 기본 설정이 다르거나 , 오라클 생성시 nls_date_format을 직접 바꿔서 설정했을경우
안될 수도 있을거라 생각합니다.
by 느훼훼
[2011.12.20 10:59:07]
위에 날짜 스트링 형식을 TO_DATE()를 써서 날짜형식으로 바꿔서 함 해보시구요,
그래도 안되면 위에 ORA-01843를 검색해보세요. 원인은 여러가지로 나오네요.
여러가지 원인 해결법을 하나하나 해보시고 실행이 잘 되면 그 방법으로
하시면 되겠어요~
by 질문자
[2011.12.20 14:39:53]
비니님 답변 감사합니다
비니님이 이야기 하신 부분이 문제 인거 같습니다.. 그럼 이제 이걸 어떻게 마춰줘야 하는지 찾아봐야 겠군요 ㅋ
by 마농
[2011.12.20 14:57:47]
Last_day 의 입력값은 날짜가 들어가야 합니다만 문자를 넣으셨네요.
문자를날짜로 자동형변환 하는 과정에서 형식이 일치하지 않아서 나는 에러입니다.
시스템 환경에 따라 될수도 있고 에러가 날수도 있는 경우입니다.
시스템 환경에 상관없이 잘 돌아가게 하려면 문자가 아닌 날짜를 넣어주셔야지요.
SELECT LAST_DAY(TO_DATE('2011-12-11', 'yyyy-mm-dd')) FROM dual;
결과값의 형식도 중요합니다.
혹시 문자형식의 결과를 원하신다면 to_char 한번 더하셔야겠지요.
SELECT TO_CHAR(LAST_DAY(TO_DATE('2011-12-11', 'yyyy-mm-dd')), 'yyyy-mm-dd') FROM dual;