퇴근5분전

일일 점검표 같은 걸 만들어줘야 하는데... 월간으로 보여줄지. 주간으로 보여줘야 할지... 

범위를 고려해야 하기 때문에 둘다 구하는 쿼리를 샘플로 만들었다. 

 

주간: 해당 일자가 포함된 주간의 일요일 ~ 토요일까지의 일자를 구한다.

월간: 해당 일자가 포함된 월의 1일 ~ 말일까지를 구한다.

 

* 예전에 만든 쿼리가 있긴 하네... 

* 임시테이블에 넣는거... 

 

* 오류 수정 :: 실제 적용해보니 원하던 결과가 아니었다. 

  04-13일요일을 설정하고 주간 정보를 보면 월요일 부터 나와야 할게 14일부터 보여져서 수정.( 04-23 )

DECLARE @TODAY DATETIME =  '2025-04-13 00:00:00'
--SET @TODAY = DATEADD( MINUTE, -(8*60+30), @TODAY )

-- 일요일부터 시작하면 : DATEADD( DAY, - CASE DATEPART(WEEKDAY, @TODAY) WHEN 1 THEN 7 ELSE  DATEPART(WEEKDAY, @TODAY) - 1 END + NUMBER,  @TODAY)
-- 월요일부터 시작하면 : DATEADD( DAY, - CASE DATEPART(WEEKDAY, @TODAY) WHEN 1 THEN 7 ELSE  DATEPART(WEEKDAY, @TODAY) - 1 END + NUMBER + 1,  @TODAY)

-- 해당 날자에 주간 
SELECT DATEADD( DAY, - CASE DATEPART(WEEKDAY, @TODAY) WHEN 1 THEN 7 ELSE  DATEPART(WEEKDAY, @TODAY) - 1 END + NUMBER + 1,  @TODAY)
  FROM MASTER..SPT_VALUES
 WHERE TYPE = 'P'
   AND NUMBER BETWEEN 0 AND 6

-- 해당 날자에 월간
SELECT DATEADD( DAY, (-1 * (DATEPART(DAY, @TODAY) - NUMBER - 1)), @TODAY)
     , DATENAME(WEEKDAY, DATEADD( DAY, (-1 * (DATEPART(DAY, @TODAY) - NUMBER - 1)), @TODAY))
  FROM MASTER..SPT_VALUES
 WHERE TYPE = 'P'
   AND NUMBER BETWEEN 0 AND DATEPART( DAY,  Eomonth( @TODAY ))-1

 

찾아보니 이것도 있네... 

set datefirst 1 -- 월요일은 1 화요일은 2 수요일은 3 ... 일요일은 7