在sql中获取最后一个日期

时间:2014-12-16 02:09:55

标签: sql sql-server-2008 tsql

我告诉你我的逻辑只有在月份 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      

请帮助

2 个答案:

答案 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,这不是有效的月份数