또 쿼리문 질문 드립니다 ^^;; 0 4 1,232

by 후레쉬 [SQL Query] [2014.07.08 14:08:54]


SELECT TO_DATE('2014-06-28', 'YYYY-MM-DD') + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 10;

위 쿼리를 돌리면 아래와 같이 나오 잖아요.

2014-06-28
2014-06-29
2014-06-30
2014-07-01
2014-07-02
2014-07-03
2014-07-04
2014-07-05
2014-07-06
2014-07-07

그러면, 월별로 뽑는건 어떻게 해야 하나요?


그러니깐, 예를들면, 6월부터 내년 5월까지 뽑고 싶거든요.. 아래 결과와 같이요..

2014-06
2014-07
2014-08
2014-09
2014-10
2014-11
2014-12
2015-01
2015-02
2015-03
2015-04
2015-05


SELECT TO_DATE('2014-06', 'YYYY-MM') + LEVEL - 1 FROM DUAL CONNECT BY LEVEL <= 12;
이렇게 해 봤는데, 안되서요..

답변 부탁 드립니다. (__)

by 아발란체 [2014.07.08 14:18:12]

ADD_MONTH 쓰시면 됩니다 ~ :)

SELECT ADD_MONTHS(TO_DATE('2014-06', 'YYYY-MM'), LEVEL - 1) FROM DUAL CONNECT BY LEVEL <= 12;

 


by 후레쉬 [2014.07.08 14:37:34]

답변 감사드립니다.

그리고, YYYY-MM-DD 형식으로 나오는데, YYYY-MM 으로 표현하려면,

SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2014-06', 'YYYY-MM'), LEVEL - 1),'YYYY-MM') FROM DUAL CONNECT BY LEVEL <= 12;

이렇게 하는게 최선인가요?

 

그리구요, 월-월 하려는데요... 일수가 나오네요..

select TO_DATE('2015-06', 'YYYY-MM') - TO_DATE('2014-06', 'YYYY-MM') from dual

 

 

두가지 답변 한번만 더 부탁 드립니다 ^^;


by 아발란체 [2014.07.08 14:55:27]

날짜 연산 관련 강좌 보시면 보다 상세하게 나옵니다.
http://www.gurubee.net/lecture/1026

 

"월 - 월 = 월"를 구하는 것이라면 MONTHS_BETWEEN 사용하시면 됩니다.

SELECT MONTHS_BETWEEN(TO_DATE('2015-06', 'YYYY-MM'), TO_DATE('2014-06', 'YYYY-MM')) FROM DUAL;

 

답변에 대해 최선인지는... 잘 모르겠네요... ㅋ


by 후레쉬 [2014.07.08 14:57:16]

아발란체님 최선의 답변을 주셨습니다.

감사드립니다.

좋은하루 되세요 ^^

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