select dateadd(d,4-datepart(dw,getdate()),getdate())
/*
--------
2008-01-09 00:00:00.000
*/

解决方案 »

  1.   

    结果贴错了。。select dateadd(d,4-datepart(dw,getdate()),getdate())
    /*
    --------
    2008-10-08 19:40:37.830
    */
      

  2.   

    首先谢谢楼上兄弟
    我要的是 指定日期以后的,就是大于getdate(),这个会把之前的日期的星期返回回来
      

  3.   

    指定日期:declare @dt datetime
    set @dt='2008-1-7'
    select dateadd(d,4-datepart(dw,@dt),@dt)
    /*
    ----------
    2008-01-09 00:00:00.000
    */
      

  4.   


    declare @date varchar(10)
    set @date='2008/10/16'
    select dateadd(dd, 4-datepart(weekday,@date),@date)
      

  5.   

    SELECT DATEADD(dd,4-DATEPART(dw,GETDATE()),GETDATE())
      

  6.   

    我知道了 select dateadd(d,11-datepart(dw,getdate()),getdate())
      

  7.   


    declare @dt datetime
    set @dt='2008-1-10'
    select dateadd(d,(11-datepart(dw,@dt))%7,@dt)
    /*
    -----
    2008-01-16 00:00:00.000
    */
      

  8.   

    select dateadd(d,case when 4-datepart(dw,getdate())<0 then 11-datepart(dw,getdate()) else 4-datepart(dw,getdate()) end,
    getdate())