본문 바로가기

프로그래밍/MSSQL

[MSSQL] 특정 기간에 해당하는 모든 날짜 (MASTER..SPT_VALUES)

반응형

 

 

 

MASTER..SPT_VALUES

시스템 테이블을 이용하여 특정 기간 사이에 해당하는 모든 날짜를 출력해보자

 

 

 

MASTER..SPT_VALUES

시스템 테이블

 

type 컬럼의 값을 'P'로 조회했을때

number 컬럼의 데이터가 0~2047 (최대 2048행)의 값으로 출력된다.

 

이를 이용하면, 특정 기간 사이에 해당하는 모든 날짜 (최대 2048개)를 출력할 수 있다.

 

쿼리는 다음과 같다.

 

SELECT CONVERT(VARCHAR, DATEADD(D, NUMBER, '시작일'), 112)
FROM MASTER..SPT_VALUES
WHERE TYPE = 'P'
    AND NUMBER <= DATEDIFF(D, '시작일', '종료일')

 

 

 

 

예제

2017-02-13 ~ 2017-07-30 기간 사이에 해당하는 모든 날짜를 출력해보자

 

SELECT CONVERT(VARCHAR, DATEADD(D, NUMBER, '20170213'), 112) AS 'DATE'
FROM MASTER..SPT_VALUES
WHERE TYPE = 'P'
    AND NUMBER <= DATEDIFF(D, '20170213', '20170730')

 

결과 데이터 (이어서)

...

결과 데이터

 

 

 

반응형