各位高手,有个问题请教,问题是这样的:    我现在用dateadd(day,5,'2008-10-28'),如果我现在执行这个的话,它的时间就会变成2008-11-02,我的目的是要对时间加5,但是要控制时间加完5后,不超过传入的时间的月份,也就是要显示在传入时间的月份的最后一天,就像上面的例子一样传入的是‘2008-10-28’加完5后要让它变成‘2008-10-31’,请问如何实现.在此先谢过

解决方案 »

  1.   

    select dateadd(day,-1,  convert(varchar(8),dateadd(day,5,'2008-10-28'),120)+'01')
      

  2.   

    select convert(varchar(10),dateadd(day,-1,  convert(varchar(8),dateadd(day,5,'2008-10-28'),120)+'01'),120)
    ------------ 
    --2008-10-31
      

  3.   

    declare @dt datetime
    set @dt = '2008-10-28'declare @d int;
    set @d = 5;select
       case when convert(varchar(6),dateadd(day,@d,@dt),112)=convert(varchar(6),@dt,112)
               then dateadd(day,@d,@dt)
            else dateadd(day,-1,dateadd(month,1,convert(varchar(6),@dt,112)+'01'))
       end
       
      

  4.   

    select  case when datepart(month,getdate()+5)<> datepart(month, getdate()) 
        then  getdate()+5-datepart(day,getdate()+5) else getdate()+5 end;