2017-02-24 400 views
-1

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

+0

提示:遞歸CTE – GurV

+0

,請給我一些詳細的解答我是新來的SQL – Ram

回答

4

使用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

1

簡單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

相關問題