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 |