Mssql 달력 만들기(통계작업 이용)

제목은 달력 만들기지만, 실질적으로 달력 보다는 통계 작업에 더욱 이용이 많이 될것 같다. 물론 통계가 아니더라도 다른 날짜 관련 작업에도 많이 이용되리라 생각된다.

제일 궁금한 해당 쿼리는 아래에 있습니다.


▶ 쿼리

DECLARE @START_DATE VARCHAR(8) = '20190101'
DECLARE @END_DATE VARCHAR(8) = '20191231'
SELECT
CONVERT(VARCHAR(10), DATEADD(D, NUMBER, @START_DATE), 120) AS [DATE]
, DATEPART(DW, CONVERT(DATETIME, @START_DATE)+ NUMBER) M_PART /*DATE에 해당하는 요일넘버, 1(일요일)~7(토요일)*/
    , DATENAME(DW, CONVERT(DATETIME, @START_DATE)+ NUMBER) M_NAME /*DATE에 해당하는 요일명*/
    , MONTH(DATEADD(D, NUMBER, @START_DATE)) AS [MONTH] -- 월
    , DATEPART(QUARTER, DATEADD(D, NUMBER, @START_DATE)) AS [QUARTER] -- 분기
    , DATEDIFF(WK, @START_DATE, DATEADD(D, NUMBER, @START_DATE)) WK -- 주
    ,
(
CASE CONVERT(VARCHAR(8), CONVERT(DATETIME, @START_DATE) + NUMBER - 1, 112)
WHEN CONVERT(VARCHAR(8), GETDATE(), 112) THEN '오늘' ELSE ''
END
) TODAY
FROM MASTER..SPT_VALUES
WHERE TYPE = 'P'
AND number <= DATEDIFF(D, @START_DATE, @END_DATE)


▶ 결과

상기의 쿼리를 실행하면 아래의 결과를 보실 수 있습니다.


시작은 2019-01-01 부터 시작하여 2019년의 마지막인 12월 31일까지 나오는 데이터 입니다.
SELECT * FROM MASTER..SPT_VALUES WHERE TYPE = 'P' ORDER BY number 쿼리를 실행하시면 아시겠지만 number이 2047로서 2047일에 대한 날짜를 한번에 추출 가능합니다.

상단의 쿼리에는 날짜 및 요일은 물론 월, 분기, 주 단위의 정보가 있어 날짜에 관한 통계작업이나 날짜에 관한 어떠한 작업에도 유용하게 처리가 가능 합니다.


물론 실질적인 데이터에 해당하는 테이블은 여러분이 아실거고 데이터 테이블과 날짜를 조인해서 사용하시면 됩니다. 이상으로 Mssql 달력 만들기(통계작업 이용)에 대해서 알아보았습니다.
조금이나마 도움이 되는 정보였으면 좋겠습니다.
오늘도 행복한 하루 되세요~~~^^

댓글

이 블로그의 인기 게시물

껌 떼는 법 (완벽 제거)

석청 효능 및 석청 부작용 알아보기

인성검사 팁 (인성검사 합격)