declare @l_startdate datetime
set @l_startdate = '2005-10-18'
select dateadd(day, -1,dateadd(month,1,@l_startdate))--输出
'2005-10-31'

解决方案 »

  1.   

    declare @dt datetime
    select @dt=getdate()
    select dateadd(day,-day(dateadd(month,1,@dt)),dateadd(month,1,@dt))
      

  2.   

    上面的写错了, 应该是
    declare @l_date datetime,
            @l_year  int,
            @l_month   int
    set @l_date = '2005-10-18'
    set @l_year = year(@l_date)
    set @l_month  = month(@l_date)
    set @l_date = convert(datetime,convert(char(4,@l_year) + '-' + convert(char(2),@l_month) + '-01')select year(dateadd(month,1,@l_date),--输出
    '2005-10-31'
      

  3.   

    declare @dt datetime
    select @dt=CONVERT(datetime,'2005-02-01',121)
    select dateadd(day,-day(dateadd(month,1,@dt)),dateadd(month,1,@dt))
      

  4.   

    呵呵,是参考 rivery(river) 的:)
      

  5.   

    declare @l_date datetime,
            @l_year  int,
            @l_month   int
    set @l_date = '2005-10-18'
    set @l_year = year(@l_date)
    set @l_month  = month(@l_date)
    set @l_date = convert(datetime,convert(char(4),@l_year) + '-' + convert(char(2),@l_month) + '-01')select dateadd(day, -1, dateadd(month,1,@l_date))