2015년 2월 24일 화요일

Oracle Query Calendar-1st

OS : Windows 7
DBMS : Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

One day, suddenly.
I wanted to create a calendar-related programs.
So. Start~

first, DB Query.
SELECT LPAD( MONTH, 20-(20-LENGTH(MONTH))/2 ) MONTH,"Sun", "Mon", "Tue",
 "Wed", "Thu", "Fri", "Sat", week
 FROM (SELECT TO_CHAR(dt,'fmMonthfm YYYY') MONTH,TO_CHAR(dt+1,'iw') week,
 MAX(DECODE(TO_CHAR(dt,'d'),'1',LPAD(TO_CHAR(dt,'fmdd'),2))) "Sun",
 MAX(DECODE(TO_CHAR(dt,'d'),'2',LPAD(TO_CHAR(dt,'fmdd'),2))) "Mon",
 MAX(DECODE(TO_CHAR(dt,'d'),'3',LPAD(TO_CHAR(dt,'fmdd'),2))) "Tue",
 MAX(DECODE(TO_CHAR(dt,'d'),'4',LPAD(TO_CHAR(dt,'fmdd'),2))) "Wed",
 MAX(DECODE(TO_CHAR(dt,'d'),'5',LPAD(TO_CHAR(dt,'fmdd'),2))) "Thu",
 MAX(DECODE(TO_CHAR(dt,'d'),'6',LPAD(TO_CHAR(dt,'fmdd'),2))) "Fri",
 MAX(DECODE(TO_CHAR(dt,'d'),'7',LPAD(TO_CHAR(dt,'fmdd'),2))) "Sat"
 FROM ( SELECT TRUNC(SYSDATE,'y')-1+ROWNUM dt
 FROM all_objects
 WHERE ROWNUM <= ADD_MONTHS(TRUNC(SYSDATE,'y'),12) - TRUNC(SYSDATE,'y'))
 GROUP BY TO_CHAR(dt,'fmMonthfm YYYY'), TO_CHAR( dt+1, 'iw' ))
 ORDER BY TO_DATE( MONTH, 'Month YYYY' ), TO_NUMBER(week);

results :
MONTH                            
--------------------------------
Sun Mon Tue Wed Thu Fri Sat WEEK
--- --- --- --- --- --- --- ----
    January 2015                 
                 1   2   3  01  
                                 
    January 2015                 
 4   5   6   7   8   9  10  02  
 ...
 ...
While studying notes.
1. all_objects : ohhhhh~~~
2. ROWNUM <= ADD_MONTHS(TRUNC(SYSDATE,'y'),12) - TRUNC(SYSDATE,'y') : WOW!
3. TO_CHAR Function : I always forget almost.
um. Ok. next~

now, Change the query to be able to change the year.
SELECT LPAD( MONTH, 20-(20-LENGTH(MONTH))/2 ) MONTH,"Sun", "Mon", "Tue",
 "Wed", "Thu", "Fri", "Sat", week
 FROM (SELECT TO_CHAR(dt,'fmMonthfm YYYY') MONTH,TO_CHAR(dt+1,'iw') week,
 MAX(DECODE(TO_CHAR(dt,'d'),'1',LPAD(TO_CHAR(dt,'fmdd'),2))) "Sun",
 MAX(DECODE(TO_CHAR(dt,'d'),'2',LPAD(TO_CHAR(dt,'fmdd'),2))) "Mon",
 MAX(DECODE(TO_CHAR(dt,'d'),'3',LPAD(TO_CHAR(dt,'fmdd'),2))) "Tue",
 MAX(DECODE(TO_CHAR(dt,'d'),'4',LPAD(TO_CHAR(dt,'fmdd'),2))) "Wed",
 MAX(DECODE(TO_CHAR(dt,'d'),'5',LPAD(TO_CHAR(dt,'fmdd'),2))) "Thu",
 MAX(DECODE(TO_CHAR(dt,'d'),'6',LPAD(TO_CHAR(dt,'fmdd'),2))) "Fri",
 MAX(DECODE(TO_CHAR(dt,'d'),'7',LPAD(TO_CHAR(dt,'fmdd'),2))) "Sat"
 FROM ( SELECT TRUNC(to_date('2015-01-01', 'yyyy-mm-dd'),'y')-1+ROWNUM dt
 FROM all_objects
 WHERE ROWNUM <= ADD_MONTHS(TRUNC(to_date('2015-01-01', 'yyyy-mm-dd'),'y'),12) - TRUNC(to_date('2015-01-01', 'yyyy-mm-dd'),'y'))
 GROUP BY TO_CHAR(dt,'fmMonthfm YYYY'), TO_CHAR( dt+1, 'iw' ))
 ORDER BY TO_DATE( MONTH, 'Month YYYY' ), TO_NUMBER(week);
execute~~~ Ok. work.
Confirmed that.

댓글 없음:

댓글 쓰기

대항해시대 조선 랭작

숙련도 획득 방법 선박 건조, 선박 강화, 전용함 추가시 숙련도 획득 모두 동일한 공식 적용 획득 숙련도 공식 기본 획득 숙련도 ≒ int{건조일수 × 현재랭크 × (0.525)} 이벤트 & 아이템 사용...