날짜 조건 질문드립니다. 0 2 821

by KYoung [Oracle 기초] 날짜 매월 특정일 [2017.12.06 17:39:25]


안녕하세요. 

매월 10일 이후의 자료만 가져오도록 조건을 걸고싶은데 잘안되서 질문드립니다.

현재 날짜가 12/06일이면 전월인 11/10일 이후 자료

현재 날짜가 12/11(10일 이후라면) 12/10일 이후의 자료 조건입니다.

 

by 스반 [2017.12.06 18:11:01]
안녕하세요. 허접한 실력이라 민망하지만 댓글을 남깁니다.

두 날짜로 해봤을때 잘되는데 원하시는 내용이었으면 좋겠네요


WITH T_DATA AS (
    SELECT '20171109' A, TO_DATE('20171109', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171110' A, TO_DATE('20171110', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171115' A, TO_DATE('20171115', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171204' A, TO_DATE('20171204', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171205' A, TO_DATE('20171205', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171206' A, TO_DATE('20171206', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171210' A, TO_DATE('20171210', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171215' A, TO_DATE('20171215', 'YYYYMMDD') B FROM DUAL
)
SELECT
    *
FROM
    T_DATA
WHERE
    (        
        (
            9 < TO_NUMBER(TO_CHAR(TO_DATE('20171130', 'YYYYMMDD'),'dd'))
                AND
            B >= TRUNC(TO_DATE('20171130', 'YYYYMMDD'), 'mm') + 9
                AND
            B < TRUNC(ADD_MONTHS(TO_DATE('20171130', 'YYYYMMDD'), 1), 'mm') + 9    
        )
            OR
        (
            9 >= TO_NUMBER(TO_CHAR(TO_DATE('20171130', 'YYYYMMDD'),'dd'))
                AND
            B >= TRUNC(ADD_MONTHS(TO_DATE('20171130', 'YYYYMMDD'), -1), 'mm') + 9
                AND
            B < TRUNC(TO_DATE('20171130', 'YYYYMMDD'), 'mm') + 9    
        )
    )

 

 

WITH T_DATA AS (
    SELECT '20171109' A, TO_DATE('20171109', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171110' A, TO_DATE('20171110', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171115' A, TO_DATE('20171115', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171204' A, TO_DATE('20171204', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171205' A, TO_DATE('20171205', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171206' A, TO_DATE('20171206', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171210' A, TO_DATE('20171210', 'YYYYMMDD') B FROM DUAL UNION ALL
    SELECT '20171215' A, TO_DATE('20171215', 'YYYYMMDD') B FROM DUAL
)
SELECT
    *
FROM
    T_DATA
WHERE
    (        
        (
            9 < TO_NUMBER(TO_CHAR(TO_DATE('20171215', 'YYYYMMDD'),'dd'))
                AND
            B >= TRUNC(TO_DATE('20171215', 'YYYYMMDD'), 'mm') + 9
                AND
            B < TRUNC(ADD_MONTHS(TO_DATE('20171215', 'YYYYMMDD'), 1), 'mm') + 9    
        )
            OR
        (
            9 >= TO_NUMBER(TO_CHAR(TO_DATE('20171215', 'YYYYMMDD'),'dd'))
                AND
            B >= TRUNC(ADD_MONTHS(TO_DATE('20171215', 'YYYYMMDD'), -1), 'mm') + 9
                AND
            B < TRUNC(TO_DATE('20171215', 'YYYYMMDD'), 'mm') + 9    
        )
    )

 


by 마농 [2017.12.06 18:31:20]
SELECT *
  FROM t
 WHERE dt >= TRUNC(sysdate - 10, 'mm') + 10
;

 

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