获取当前月份和上个月的所有日期在sql中

时间:2017-02-24 10:46:58

标签: sql sql-server

我想从今天开始在当月和上个月收到所有日期。如果今天是2017年2月24日,我希望得到像24/02 / 2017,23 / 02 / 2017,22这样的日期SQL Server中的/ 02 / 2107--至23-01-2017。

2 个答案:

答案 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