SQL2000SQL日期推算
已知条件billdate是2013-03-071、计算本月最后一天
  2013-03-31
SELECT  dateadd(ms,-2,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0)) 
SELECT  dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1,   0))  2、如何可以推算出上一个月的开始日期和结束日期
2013-02-01,2013-02-283、如何可以推算出上2个月的开始日期和结束日期
2013-01-01,2013-01-314、如何可以推算出上3个月的开始日期和结束日期
2012-12-01,2012-12-315、如何可以推算出上4个月的开始日期和结束日期
2012-11-01,2012-11-306、如何可以推算出上5个月的开始日期和结束日期
2012-10-01,2012-10-316、如何可以推算出上6个月的开始日期和结束日期
2012-09-01,2012-09-30

解决方案 »

  1.   

    declare @billdate datetime,@month int
    select @billdate='2013-03-07',@month=-1
    SELECT convert(varchar(8),dateadd(month,@month,@billdate),23)+'01'[开始日期],convert(varchar,dateadd(day,-1,dateadd(month,1+@month,convert(varchar(8),@billdate,23)+'01') ),23)[结束日期]
      

  2.   

    DECLARE @a DATETIME
    SET @a='2013-03-07'
    SELECT DATEADD(d, DATEDIFF(D,@a,DATEADD(mm,1,@a))-DAY(@a),@a)
      

  3.   

    就是1L的语句,只要改@month的值,就可以得到不同月的日期了。
      

  4.   


    现在只知道已知条件billdate是2013-03-07,其它的都要推算
      

  5.   

    @month=-1就是上1个月的。
    @month=-2就是上2个月的。
    @month=-3就是上3个月的。
    @month=-4就是上4个月的。
    @month=-5就是上5个月的。
    @month=-6就是上6个月的。