2017-10-16 1 views
0

나는 그것이 현재 날짜에서 3-15개월 사이의 모든 날짜를 출력하는 기본 SQL 쿼리를 작성하려는 : 선택 할 테이블이 없지만from 테이블 절을 사용하지 않고 날짜 범위를 선택하는 방법은 무엇입니까?

DATEADD(month, 3, GETDATE()) AND (DATEADD(month, 15, GETDATE())) 

캐치입니다. 난 그냥 기본 SELECT를 수행하여 날짜 목록을 얻고 싶습니다. 이것이 가능한가?

+0

여기 날짜 범위는 세트입니다. 나는'SELECT'가 테이블없이 집합을 출력 할 수 있다고 생각하지 않는다. – qxg

답변

2

다음 두 날짜 사이의 모든 날짜를 가져 오는 데 도움이됩니다.

DECLARE @Date1 DATE, @Date2 DATE 
SET @Date1 = '2015-05-28' 
SET @Date2 = '2015-06-30' 

SELECT DATEADD(DAY,number+1,@Date1) [Date] 
FROM master..spt_values 
WHERE type = 'P' 
AND DATEADD(DAY,number+1,@Date1) < @Date2 
+0

대단히 감사합니다. –

0

아직 대답이 있지만 아직 문서화되지 않았거나 지원되지 않는 시스템 테이블에 의존하지 않는 대안을 제안합니다.

declare @Date1 date = '2015-05-28'; 
declare @Date2 date = '2015-06-30'; 
declare @Dates table (Date Date); 

while @Date1 <= @Date2 
begin 
    insert into @Dates (Date) values (@Date1); 
    set @Date1 = DateAdd(Day, 1, @Date1); 
end 

select * from @Dates; 
관련 문제