안녕하세요 특정 날짜의 주차를 구하고 있는데 막히는 부분이 있어 문의 드립니다. 기준은 월요일 ~ 일요일 까지가 같은 주차로 취급 하고 싶은데 아래 달력 이미지를 처럼 "2018-12-31"과 "2019-01-01"이 같은주로 취급 하려고 하는데 아래 쿼리 수행 결과를 보면 12-31 = 6 , 01-01 = 1 로 나타납니다. 전체 주차에서 해당 날짜의 주차를 뺄셈으로 계산을 하여 저런 결과가 나오는데 이것을 어떻게 바꿔야 할지 막혀있어 문의 드립니다. select WEEK( '2018-12-31', 5 ) - WEEK( '2018-12-01', 5) + 1 AS '12-31의 주차', WEEK( '2019-01-01', 5 ) - WEEK( '2019-01-01', 5) + 1 AS '01-01의 주차 '
감사합니다.
WITH t AS ( SELECT '2018-12-29' dt -- 토 -> 52 -> 4 UNION ALL SELECT '2018-12-30' -- 일 -> 52 -> 4 UNION ALL SELECT '2018-12-31' -- 월 -> 01 -> 1 UNION ALL SELECT '2019-01-01' -- 화 -> 01 -> 1 UNION ALL SELECT '2019-01-02' -- 수 -> 01 -> 1 UNION ALL SELECT '2019-01-03' -- 목 -> 01 -> 1 UNION ALL SELECT '2019-01-04' -- 금 -> 01 -> 1 UNION ALL SELECT '2019-01-05' -- 토 -> 01 -> 1 UNION ALL SELECT '2019-01-06' -- 일 -> 01 -> 1 UNION ALL SELECT '2019-01-07' -- 월 -> 02 -> 2 ) SELECT dt -- 대상일자 , ym -- 해당월 4일은 항상 해당월 첫주에 포함됨 , WEEKOFYEAR(dt) Week_of_Year -- 년 주차(1~53) , WEEKOFYEAR(dt) - WEEKOFYEAR(ym) + 1 Week_of_Month -- 월 주차(1~5) FROM (SELECT dt , DATE_FORMAT( dt + INTERVAL (4 - DAYOFWEEK(dt - INTERVAL 1 DAY)) DAY -- 해당 주차 목요일 , '%Y-%m-04') ym -- 목요일 해당월 4일 FROM t ) a ;