datediff(week,create_day-1,getdate())=0这样写 在星期天就查不出数据来
 datediff(week,create_day,getdate())=0这样写 就查不出星期天的数据来

解决方案 »

  1.   

    select * from tb where create_day between DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) 
    and DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) + 6
      

  2.   

    --当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。
    SELECT datediff(week,'2011-5-1','2011-5-8')
      

  3.   

    declare @dt as datetime
    set @dt = '2011-03-13'
    select case when datepart(weekday,@dt) = 1 
                then convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) - 7,120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6 - 7,120)
                else convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0),120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6,120)
           end
    /*
                            
    ----------------------- 
    2011-03-07 - 2011-03-13(所影响的行数为 1 行)
    */
    set @dt = '2011-03-14'
    select case when datepart(weekday,@dt) = 1 
                then convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) - 7,120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6 - 7,120)
                else convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0),120) + ' - ' + convert(varchar(10),DATEADD(wk, DATEDIFF(wk,0,@dt), 0) + 6,120)
           end
    /*
                            
    ----------------------- 
    2011-03-14 - 2011-03-20(所影响的行数为 1 行)
    */
      

  4.   

    因为系统默认是星期天为一个星期的第一天,要设置一个星期的第一天为星期一就可以查到星期天的数据。
    set DATEFIRST=1
      

  5.   

    SET DATEFIRST 1
    datediff(week,dateadd(day,-@@DATEFIRST,'2011-05-09'),getdate())=0
      

  6.   

    SET DATEFIRST 1
    改变星期的默认起点
      

  7.   

    datediff(week,create_day-1,getdate())=0
    和这句一样  
      

  8.   

    datediff(week,create_day-1,getdate())=0
    datediff(week,dateadd(day,-@@DATEFIRST,'2011-05-09'),getdate())=0
    查出来的数据确实是周一到周末的  但是到了每周的周日 查出来的数据就是下周的周一到周末的数据
      

  9.   

    SELECT DATEADD(Day,1-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-2)%7-1,GETDATE())SELECT DATEADD(Day,1-(DATEPART(Weekday,GETDATE())+@@DATEFIRST-2)%7+5,GETDATE())