日期:2014-05-17  浏览次数:20751 次

SQL2000日期推算
SQL2000SQL日期推算
已知条件billdate是2013-03-07

1、计算本月最后一天
  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-28

3、如何可以推算出上2个月的开始日期和结束日期
2013-01-01,2013-01-31

4、如何可以推算出上3个月的开始日期和结束日期
2012-12-01,2012-12-31

5、如何可以推算出上4个月的开始日期和结束日期
2012-11-01,2012-11-30

6、如何可以推算出上5个月的开始日期和结束日期
2012-10-01,2012-10-31

6、如何可以推算出上6个月的开始日期和结束日期
2012-09-01,2012-09-30

------解决方案--------------------
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)[结束日期]

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

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