求距离当期日期n个工作日(周一至周五)的日期
比如:当前日期是:2010-08-16,10个工作日后是2010-08-30

解决方案 »

  1.   


    create proc sp_wsp
    @star datetime,
    @n int
    as
    set datefirst 1
    ;with wsp
    as
    (
    select rq=dateadd(dd,number,@star) from master..spt_values where type='p' and number between 0 and @n*2
    and datepart(dw,dateadd(dd,number,@star)) not in(6,7)
    )
    select * from wsp a  where (select count(1) from wsp where rq<a.rq)=@n
    goexec sp_wsp '2010-08-16',10--结果:
    rq
    -----------------------
    2010-08-30 00:00:00.000
      

  2.   

    如果经常要记录工作日等数据,不妨在库里建一个日历表,一次生成,终生(系统的生命周期)受用。参看:http://topic.csdn.net/u/20100528/16/f3c160a2-6d97-4e19-8f74-154d34a940d7.html