我想从今天开始在当月和上个月收到所有日期。如果今天是2017年2月24日,我希望得到像24/02 / 2017,23 / 02 / 2017,22这样的日期SQL Server中的/ 02 / 2107--至23-01-2017。
答案 0 :(得分: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
答案 1 :(得分: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