날짜 관련 쿼리중 질문요~! 0 6 1,700

by 블루오션 [SQL Query] [2010.04.15 15:55:01]


두개의 컬럼에 있는 날짜를 한번에 보여주려고 || 파이프를 이용해서 붙였는대요
TO_DATE(a.STARTDT, 'YYYY-MM-DD'),
|TO_DATE(a.ENDDT, 'YYYY-MM-DD')

위와 같이 정상적으로 2개 컬럼을 보여주면 2009-04-21 이런식으로 잘 보입니다.

하지만 아래와 같이 붙여서 출력 하려면

TO_DATE(a.STARTDT, 'YYYY-MM-DD') || '~' || TO_DATE(a.ENDDT, 'YYYY-MM-DD')

09/04/21 ~ 09/04/30 이런식으로 출력이 되버리내요

- 표시가 아닌 / 표시로 연도도 2자리 밖에 출력이 안되더군요

이거 어떻게 해야하나요? 고수님들 답변좀 부탁드립니다.

아 그리고 하나 더요^^

TRUNC('2009-02-03', 'year)
저렇게 자르면
2009-01-01 이런식으로 날자가 잘려서 나오지 않습니까.
이거 반대로 그해 연도에 마지막 2009-12-31 로 나오게 하려면 어떻게 하는지요?
by 마농 [2010.04.15 16:39:35]
해당컬럼의 데이터형에 따라 쿼리가 달라져야 합니다.
해당 항목의 데이터형이 date 인가요? varchar2인가요?
만약 varchar2라면 어떤식의 자료가 들어있나요?

by 현 [2010.04.15 16:39:59]
밑에꺼에 대한 답은 TRUNC('2009-02-03', 'year)||'-12-31' 하시면 됩니다.

by v상이v [2010.04.15 16:43:25]
STARTDT나 ENDDT 를
date형으로 변경후 다시 문자형으로 변경해 주시면 되죠..
TO_CHAR(TO_DATE(a.STARTDT, 'YYYY-MM-DD') ,'YYYY-MM-DD')

그리고 그래 연도에 마지막 날을 가져오는게...
바로 가져오는게 있는진 모르겠네요....
LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE,'YYYY'),11)) 하면 되긴 하는데..
해당 년의 마지막날은 항상 12월31일이니...
년도만 가져와서 년도에 12/31을 붙이면 되지 않을까요?

by 블루오션 [2010.04.15 17:11:14]
컬럼의 데이터형은 CHAR 입니다.

답변주신 모든분들 감사합니다.^^

by 마농 [2010.04.15 17:13:43]
컬럼 자체가 문자형이라면 변환할 필요 없이 그냥 붙이면 되겠는데요?
a.startdt || '~' || a.enddt

by 블루오션 [2010.04.15 19:10:52]
마농님// 답변 감사합니다.^^ 컬럼에 들어갈때 20100421 이런식으로 붙어 들어가서요^^ 그녕 다시 TO_CHAR 로 변환 한번 더 하니 잘되긴하내요.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입