MSSQL 2019. 7. 10. 16:22

   SELECT
            CONVERT(VARCHAR(10), DATEADD(D, number, '201907' + '01'), 120) AS "workDate"
            , CASE
                  WHEN DATEPART(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) = '1' THEN '일'
                  WHEN DATEPART(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) = '2' THEN '월'
                  WHEN DATEPART(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) = '3' THEN '화'
                  WHEN DATEPART(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) = '4' THEN '수'
                  WHEN DATEPART(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) = '5' THEN '목'
                  WHEN DATEPART(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) = '6' THEN '금'
                  WHEN DATEPART(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) = '7' THEN '토'
              END AS "day"
            
            ,DATENAME(DW, CONVERT(VARCHAR(8), DATEADD(D, number, '201907' + '01'), 112)) AS "day"
            , '' AS "remark"
         FROM
            MASTER..SPT_VALUES
         WHERE
            TYPE = 'P'
         AND
            CONVERT(VARCHAR(6), DATEADD(D, number, '201907' + '01'), 112) < '201907' + '01'

MASTER..SPT_VALUES 테이블의 TYPE = 'P' 를 하면 0~2047 까지의 number 리턴된다.

지정한 첫날짜에 dateadd 를 number 만큼 해서 달력을 만들수 있다.

where 조건에 시작월과 마지막 월을 지정해주면 달력 완성 가능

추가로 주차를 가져오는 쿼리도 있으니 해당 쿼리는 구글링해서 추가하면 더 완벽한 달력을 만들수 있다.

'MSSQL' 카테고리의 다른 글

CONCAT 활용  (0) 2019.10.15
테이블 복사  (0) 2019.10.14
MS-SQL 날짜별 요일구하기  (0) 2019.04.10
mssql 루프  (0) 2015.03.05
posted by 찡찡이현민
: