输入 
2009-10-13
2010-2-1返回
2009-10-31
2009-11-30
2009-12-31
2010-1-31
2010-2-28返回时间之间的月的最后一天

解决方案 »

  1.   

    declare @sdt datetime,@edt datetime
    select @sdt='2009-10-13',@edt='2010-2-1'
    select
      convert(varchar(10),dateadd(dd,-1,convert(varchar(8),dateadd(mm,number,@sdt),120)+'01'),120)
    from
      master..spt_values
    where
      type='p' and number>0
    and
      dateadd(mm,number,@sdt)<=dateadd(mm,2,@edt)/**----------
    2009-10-31
    2009-11-30
    2009-12-31
    2010-01-31
    2010-02-28(5 行受影响)
    **/