오라클 특정 주수차 요일 쿼리 1 9 1,101

by 이삐 [SQL Query] [2022.09.13 19:36:47]


안녕하세요
매월 특정 주수차 요일을 구해야 하는데 어렵네요..
월~일 아니라 일~토 기준으로 해야 하는데 대부분이 월~일 기준이네요
예를 들면 매월 둘째주, 넷째주 화요일을 구해야 합니다
그럼 현재월 기준으론 6일, 20일이 되겠네요 다음달인 10월 기준으론 4, 18일이 되겠구요
어떻게 쿼리를 짜면 될지 도움을 구합니다
감사합니다!

by 마농 [2022.09.14 08:40:01]
-- 현재월 기준 / 2,4 주차 화요일 --
SELECT sysdate
     , TRUNC(TRUNC(sysdate, 'mm'), 'd') + 3 + 6      tue_2
     , TRUNC(TRUNC(sysdate, 'mm'), 'd') + 3 + 6 + 14 tue_4
  FROM dual
;

-- 특정월 기준 / 2,4 주차 특정요일 --
SELECT ym
     , TRUNC(ym, 'd') + dy + 6      tue_2
     , TRUNC(ym, 'd') + dy + 6 + 14 tue_4
  FROM (SELECT TO_DATE('202210', 'yyyymm') ym    -- 연월
             , 3 dy    -- 요일(일월화수목금토 : 1234567)
          FROM dual)
;

 


by 이삐 [2022.09.14 09:06:03]

진심으로 감사드립니다!!!!


by 이삐 [2022.09.14 09:27:35]

하나만 질문드려도 될까요?
두번째 쿼리인 특정월 특정요일 쿼리에서 6의 의미는 무엇인가요?
1, 3째주 인 경우도 고려해야 해서 보고 있는데 이해가 안되네요 ^^;;


by 마농 [2022.09.14 09:32:21]

6을 더한 것은
- 첫째 주 일주일의 마지막으로 이동하기 위한 것입니다.
- 거기에 요일에 해당하는 숫자를 더한 것입니다.
2,4주차는 말이 되지만. 1,3 주차는 말이 좀 안됩니다.
- 2주차 화요일은 무조건 존재하지만
- 1주차 화요일은 존재하지 않을 수 있습니다. (2022년 9월 1주차 화요일은?)


by 이삐 [2022.09.14 09:47:50]

네 감사합니다
1주차에 없는 요일은 없는대로 있는 주차 요일만 가져오면 되는 거라서요
이리 저리 해보니 어쨌든 규칙은 만들 수 있겠더라구요
덕분에 해결되었습니다 정말 감사드립니다!!


by pajama [2022.09.14 08:45:26]

아래 쿼리 참고해봤습니다.

SELECT NEXT_DAY( TRUNC( TRUNC( SYSDATE, 'MM' ), 'IW' ) - INTERVAL '1' DAY, 'TUESDAY' ) + 1 * INTERVAL '7' DAY AS tuesday2,
       NEXT_DAY( TRUNC( TRUNC( SYSDATE, 'MM' ), 'IW' ) - INTERVAL '1' DAY, 'TUESDAY' ) + 3 * INTERVAL '7' DAY AS tuesday4
FROM   DUAL;

 

https://stackoverflow.com/questions/58165836/return-date-value-from-nth-week-of-month-in-sql-developer-without-creating-funct


by 이삐 [2022.09.14 09:06:25]

감사드립니다!! ^^


by 마농 [2022.09.14 09:35:01]

1. IW 는 월화수목금토일 기준입니다.
- 2022년 5월의 경우 일요일로 시작하는데 결과가 잘못 나오게 됩니다.
- IW 대신 D 를 사용해야 일월화수목금토 기준이 됩니다.
2. 'TUESDAY'를 사용한 것으로 보아
- 언어셋이 영어인듯 하네요.
- 한국어 설정에서는 오류가 나게 됩니다. '화요일' 로 바꿔야 함.
- 언어셋에 상관없이 동작하도록 'TUESDAY' 나 '화요일' 대신 숫자 3 을 이용하는게 좋을 듯 하네요.


by pajama [2022.09.14 10:02:29]

마농님 말씀 감사합니다. 테스트한 환경이 영어라 당연하게 생각했네요.

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