하은양 믿음군 효실맘 호홍홍집s

예약날자 조건별 처리하기 본문

가벼운 배움/Oracle

예약날자 조건별 처리하기

호홍홍집 2016. 7. 3. 16:03

select
    to_char(caldates.dates,'YYYYMMDD') YYYYMMDD,
    to_char(caldates.dates,'MM') MM,
    to_char(caldates.dates,'DD') DD,
    -- 현재달인지 체크
    case when to_char(caldates.dates,'MM') = to_char(TO_DATE('20160801','YYYYMMDD'),'MM') then 'Y' else 'N' end IsThisMonth,
    -- 최소 몇일전 예약가능
    case when to_char(caldates.dates,'YYYYMMDD') >= to_char(sysdate + 2,'YYYYMMDD')   then 'Y' else 'N' end IsFromday,
    -- 최소 몇달전 예약가능
    case when to_char(caldates.dates,'YYYYMMDD') >= to_char(add_months(sysdate,1),'YYYYMMDD') then 'Y' else 'N' end IsFromMonth,
    -- 오늘부터 이번달 말까지 예약가능
    case when to_char(caldates.dates,'YYYYMMDD') between to_char(sysdate,'YYYYMMDD') and to_char(last_day(add_months(sysdate,0)),'YYYYMMDD') then 'Y' else 'N' end IsRtypeB,
    -- 오늘부터 몇일까지 예약가능
    case when to_char(caldates.dates,'YYYYMMDD') between to_char(sysdate,'YYYYMMDD') and to_char(to_date('20160708','YYYYMMDD'),'YYYYMMDD') then 'Y' else 'N' end IsRtypeD,
    -- 오늘부터 몇개월까지 예약가능
    case when to_char(caldates.dates,'YYYYMMDD') between to_char(sysdate,'YYYYMMDD') and to_char(add_months(sysdate,1),'YYYYMMDD') then 'Y' else 'N' end IsRtypeAM,
    -- 오늘부터 몇일동안 예약가능
    case when to_char(caldates.dates,'YYYYMMDD') between to_char(sysdate,'YYYYMMDD') and to_char(sysdate + 10,'YYYYMMDD') then 'Y' else 'N' end IsRtypeAD,
    -- 다음달(1), 다다음달(2), 다다다음달(3) 1일부터 월말까지 예약가능
    case when to_char(caldates.dates,'YYYYMMDD') between to_char(trunc(add_months(sysdate,2),'MM'),'YYYYMMDD') and to_char(last_day(add_months(sysdate,2)),'YYYYMMDD') then 'Y' else 'N' end IsRtypeC
from (   
    SELECT NEXT_DAY(TO_DATE('20160801','YYYYMMDD') - 7, 1 ) + ROWNUM - 1 DATES
    FROM ALL_OBJECTS
    WHERE ROWNUM <= (NEXT_DAY(LAST_DAY(TO_DATE('20160801','YYYYMMDD')),1) - NEXT_DAY((TO_DATE('20160801','YYYYMMDD') - 7),1))
) caldates
;