Last_day 함수에 대한 질문입니다 0 5 5,804

by 손님 LAST_DAY ORA-01843 [2011.12.20 10:23:53]



쿼리
SELECT LAST_DAY('2011-12-11') FROM DUAL

위와 같이 쿼리 수행시 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;

by xo [2011.12.20 17:14:44]
last_day로 들어가는 인자는 date형식입니다.
토드나 오렌지같은 툴에서 실행된다고 sqlplus에서 실행되는건 아닙니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입