获取本月的所有日期和上个月的sql

问题描述:

我想从今天获得当前月份和上个月的所有日期。如果今天是24/02/2017,我想获得日期,例如24/02/2017,23/02/2017,22/02/2107--到23-01-2017在SQL Server中。获取本月的所有日期和上个月的sql

+0

提示:递归CTE – GurV

+0

,请给我一些详细的解答我是新来的SQL – Ram

使用Recursive CTE

with cte as 
    (
    select getdate() as n 
    union all 
    select dateadd(DAY,-1,n) from cte where dateadd(dd,-1,n)> DATEADD(month, -1, getdate()) 
) 
    select * from cte 
+0

由于它的作品不错,我期待 – Ram

+0

尼斯回答只是做一个小小的调整,因为在这个例子中iterarion在23/01结束,你的代码在两天前提前25/01 – jean

简单WHILE会做的伎俩

declare 
@today date = getdate() 
,@day date 

set @day = @today 

while @day >= DATEADD(month, -1, @today) 
begin 

select @day 
set @day = DATEADD(day, -1, @day) 

end 

如果你想在一个表只是一个临时表中插入这种方式。此外代码纠正迭代,直到今天 -1 -1 像你的例子。

declare 
@today date = getdate() 
,@day date 

declare 
@daysTable table ([day] date not null) 

set @day = @today 

while @day >= DATEADD(DAY, -1, DATEADD(month, -1, @today)) 
begin 

--select @day 
insert into @daysTable values (@day) 

set @day = DATEADD(day, -1, @day) 

end 

select * from @daysTable 
+0

谢谢,它帮助了我很多 – Ram