用SQL自带的函数就可以,一个是返回指定天数后的日期,一个的返回指日期的星期几。以后就不用我说了吧

解决方案 »

  1.   

    select convert(char(10),dt,120) from 
    (
    select top 7 getdate()+20+(select sum(1) from sysobjects where name<=a.name) as dt
    from sysobjects a
    ) tmp
    where datepart(weekday,dt) = 6           
    ---------- 
    2004-01-16(所影响的行数为 1 行)
      

  2.   

    declare @ datetime
    set @ = '2003-12-10' --getdate()select dateadd(day, ( 7 - datepart(weekday,dateadd(day,21,@)) + 6),dateadd(day,21,@))
      

  3.   

    干部的解决方案有问题啊,
    declare @ datetime
    set @ = '2003-12-10' --getdate()select dateadd(day, ( 7 - datepart(weekday,dateadd(day,21,@)) + 6),dateadd(day,21,@))用2003/12/10为例,21天之后是2003/12/31,而那个礼拜五应该是2004/01/02,但是上面的SQL给出的答案是2004/01/09。
      

  4.   

    declare @ datetime
    set @ = '2003-12-10' --getdate()select dateadd(day, case when datepart(weekday,dateadd(day,21,@)) >= 6 then (13 - datepart(weekday,dateadd(day,21,@)))
                             else 6 - datepart(weekday,dateadd(day,21,@)) end ,dateadd(day,21,@))