오라클11g쓰시는 분들 조언좀 부탁드립니다.. 자꾸 에러가 나요.. 0 3 1,514

by 개논물 [2016.07.27 11:40:51]


SELECT TO_CHAR(DAY + LEVEL -1, 'yyyyMMdd') AS years ,
       TO_CHAR(DAY + LEVEL -1, 'dd') AS dates ,
       TO_CHAR(TO_DATE('20160727')+1,'fmiw') - TO_CHAR(TRUNC(TO_DATE('20160727'),'mm')+1,'fmiw')+1 WEEK ,
       CASE TO_CHAR(DAY + LEVEL -1, 'd')
           WHEN '1'
           THEN 'Sun'
           WHEN '2'
           THEN 'Mon'
           WHEN '3'
           THEN 'Tue'
           WHEN '4'
           THEN 'Wed'
           WHEN '5'
           THEN 'Thu'
           WHEN '6'
           THEN 'Fri'
           WHEN '7'
           THEN 'Sat'
       END AS YOIL
  FROM
       (SELECT TRUNC(TO_DATE( '20160727','YYYYMMDD'),'D') AS DAY
         FROM dual
       ) CONNECT BY LEVEL <= 7 ;

 

이 쿼리를 오라클 11g에 날렸는데 자꾸 에러가 납니다.

ORA-01861: literal does not match format string

조언 좀 부탁드리겠습니다 감사합니다.

 

by 랑에1 [2016.07.27 13:02:56]

TO_DATE('20160727') -> TO_DATE('20160727', 'YYYYMMDD')

요렇게 해보세요


by 마농 [2016.07.27 13:13:55]

1. 오류 원인은 날짜 포멧을 지정하지 않았기 때문입니다.
  - 변경전 : TO_DATE('20160727')
  - 변경후 : TO_DATE('20160727', 'yyyymmdd')
2. Week 구하는 식이 맞는지 의심스럽습니다.
  - '20160107' 로 테스트 해보세요. 엉뚱한 값이 나올 것입니다.
  - Week 를 구하는 규칙을 알려주세요.
3. Yoil 은
  - 변경전 : CASE ...
  - 변경후 : TO_CHAR(day, 'Dy', 'nls_date_language=american')


by 개논물 [2016.07.27 13:25:37]

정말 감사드립니다.   YYYYMMDD 붙이닌깐 되네요 감사합니다.

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