SELECT CONVERT(varchar(10), printdate, 120) AS printdate, COUNT(1) AS printCount FROM printdata  
                   WHERE (DATEPART(week, printdate) = DATEPART(week, GETDATE()) - 1)  
                   GROUP BY CONVERT(varchar(10), printdate, 120)  ORDER BY printdate
获得上周我用DATEPART(week, GETDATE()) - 1 现在问题出来了:DATEPART好像是获得一年当中第几周,现在是2011年1月,查询时2002年1月的数据都跑出来,有什么好的解决办法,只获得上一周的数据

解决方案 »

  1.   

    或得本周一后再减去七天.select * from tb where datediff(dd,DATEADD(wk,  DATEDIFF(wk,0,getdate()), 0)  - 7) between 0 and 7
      

  2.   

    我现在是加个条件(datepart(yyyy,printdate))=(datepart(yyyy,getDate()))
    不知道还有没有什么办法
      

  3.   

    能不能解释一下这两句DATEDIFF(wk,0,getdate())
    DATEADD(wk,DATEDIFF(wk,0,getdate()), 0)
      

  4.   

    select cast(0 as datetime) -----------------------
    1900-01-01 00:00:00.000(1 行受影响)知道这个0就知道那个什么意思了
      

  5.   

    DATEDIFF ( datepart , startdate , enddate )函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分,getdate()获取当前时间。
    DATEADD ( datepart , number, date ) 在向指定日期加上一段时间的基础上,返回新的 datetime 值,楼主看看联机
    上面已经给出答案了
      

  6.   

    --本周的星期一  
    select dateadd(wk,datediff(wk,0,getdate()),0)
      

  7.   

    学习!DECLARE @D DATETIME
    ,@X DATETIME
    SET @D='2011-01-11'
    SET @X='2011-01-10'SELECT DATEDIFF(wk,0,@D)
    SELECT DATEADD(wk,  DATEDIFF(wk,0,@D), 0)
    SELECT DATEADD(DAY,-7,DATEADD(wk, DATEDIFF(wk,0,@D), 0))SELECT DATEDIFF(DAY,DATEADD(DAY,-7,DATEADD(wk,  DATEDIFF(wk,0,@D), 0)),@X)