我告诉你我的逻辑只有在月份 12月
时才会出错declare @startDate datetime
declare @endDate datetime
set @startDate = convert(varchar(2),@month)+'/1/'+ convert(varchar(4),@year)
set @endDate = dateadd(DD,-1,(convert(varchar(2),@month+1)+'/1/'+convert(varchar(4),@year)))
while(@startDate < @endDate+1)
begin
insert into @tempday
select @startDate
set @startDate = dateadd(day, 1, @startDate )
end
请帮助
答案 0 :(得分:1)
获得@startdate
后,请使用:
set @enddate = dateadd(day,-1,dateadd(month,1,@startdate))
我不认为你的意思是plsql ......
您还可以考虑其他一些事情,例如不使用while循环。为什么不查询具有大量行的表(例如sys.all_columns
)并使用:
insert @tempday
select top (datediff(day,@startdate,@enddate)+1)
dateadd(day,row_number() over (order by (select 1))-1,@startdate)
from sys.all_columns;
答案 1 :(得分:0)
如果是12月@month+1
将获得13,这不是有效的月份数