2017-10-16 1 views
0

私は、現在の日付3から15ヶ月の間に、それはすべての日付を出力し、基本的なSQLクエリを書きたい:from table句を使用せずに日付範囲を選択するにはどうすればよいですか?

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

から選択するための表がないのにキャッチがあります。私はちょうど日付のリストを取得するために基本的なSELECTを実行したい。これは可能ですか?

+0

ここの日付範囲はセットです。私は 'SELECT'がテーブルなしでセットを出力できるとは思わない。 – qxg

答えて

2

以下は、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; 
関連する問題