[MySQL] 특정 날짜의 주차 구하는 쿼리 문의 드립니다. 0 3 1,524

by 홍이 [SQL Query] MySQL SQL Query [2019.01.23 11:51:54]


이미지1.png (281,890Bytes)

안녕하세요 특정 날짜의 주차를 구하고 있는데 막히는 부분이 있어 문의 드립니다.
기준은 월요일 ~ 일요일 까지가 같은 주차로 취급 하고 싶은데 아래 달력 이미지를 처럼 
"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의 주차 '

 

감사합니다.

by 마농 [2019.01.24 09:30:48]

월주차 구해야만 하나요?
년주차 구해도 되는 거라면?
간단하게 다음과 같이...

SELECT dt
     , DATE_FORMAT(dt, '%v') ww
     , WEEKOFYEAR(dt) ww
     , WEEK(dt, 3) ww
  FROM (SELECT '2018-12-30' dt         -- 일 -> 52
        UNION ALL SELECT '2018-12-31'  -- 월 -> 01
        UNION ALL SELECT '2019-01-01'  -- 화 -> 01
        ) a
;

 


by 홍이 [2019.01.24 20:52:14]

마농님 많은 답변 항상 감사합니다!

월요일부터 일요일까지를 1주로 월별 주차를 구하고 싶어서 여러가지 찾아보고 있습니다.


by 마농 [2019.01.25 08:23:02]
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
;

 

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