변환함수 사용시 '리터럴이 형식 문자열과 일치하지 않음' 오류 0 7 6,454

by imilly [SQL Query] [2014.01.09 11:06:08]


 
SELECT
   SUBSTR(TRUNC(SUM(MONTHS_BETWEEN(TO_DATE(STARTDATE), TO_DATE(ENDDATE)))/12), 2, 2),
    SUBSTR(TRUNC(MOD(SUM(MONTHS_BETWEEN(TO_DATE(STARTDATE), TO_DATE(ENDDATE))), 12)), 2, 2)
FROM DATE
안녕하세요 기초적인데 잘 이해가 안돼서 질문 드립니다. 연,월 구하는 문장을 작성했습니다. 테스트서버에서 실행하면 문제없이 잘 되는데 회사 DB서버에서 실행하면 'ORA-01861: 리터럴이 형식 문자열과 일치하지 않음' 오류가 발생합니다. nls_session_parameters;조회해보면 양 쪽 다 날짜 세팅은 같게 돼있는데 왜 그럴까요..
 아직 능숙하지 못해서 문장도 지저분하네요.. 오라클 10G입니다. 조언 좀 부탁드려요.
by 용근님 [2014.01.09 11:08:16]
Date 형태가 아닌 문자열이 있나봅니다.

by imilly [2014.01.09 11:10:50]

아 저 두 컬럼에 저장된 데이터 중에서 말씀이시죠?


by imilly [2014.01.09 11:08:36]

날짜 형식을 'YYYYMMDD' 아무리 바꿔봐도 마찬가지네요.

by 용근님 [2014.01.09 11:11:59]
to_date가 아니라 그냥 

select STARTDATE, ENDDATE from t

실제 문자열이 날짜로 형변환 되지 않는 녀석이 있나 확인해보라는거지요.

by imilly [2014.01.09 11:13:13]

감사합니다..ㅠㅠㅠㅠㅠㅠㅠㅠ찾았습니다. 이걸 생각못하다니 감사합니다 용근님 짱


by 마농 [2014.01.09 11:19:59]
1. 우선 TO_DATE(startdate) 은 잘못된 사용법입니다.
  - 날짜포맷을 정확하게 지정해 주세요. TO_DATE(startdate, 'yyyymmdd')
2. 그리고 Substr 을 사용한 이유가 ??? 이것 역시 잘못된 사용이네요...

by imilly [2014.01.09 17:06:42]

말씀 듣고 생각해보니 그러네요. SUBSTR 일단 빼고 날짜 형식 지정해서 다시 수정했습니다.
감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입