如何在不使用from table子句的情况下选择日期范围?

时间:2017-10-16 03:44:19

标签: sql sql-server

我想写一个基本的SQL查询,它输出从当前日期起3到15个月之间的所有日期:

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

虽然没有可供选择的表格。我只是想执行一个基本的SELECT来获取日期列表。这可能吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;