主要是获取本周的日期查询,我试过:...where datediff(day,改档日期,getdate())<= 7,但只能获取最近7天内的数据,还不是本周的数据。详细问题描述贴:
http://community.csdn.net/Expert/topic/3991/3991106.xml?temp=.1489527

解决方案 »

  1.   

    方法1,在程序里可以取得本星期的开始日期和结束日期(两个参数),然后传到SQL中用“Between...And”来匹配
    DateTime.Now.DayOfWeek可以帮助你方法2,在SQL语句里取Day/7的余数,可以知道当前是星期几,然后再取得本星期的开始日期和结束日期,用“Between...And”和传入的日期匹配(一个参数)
    一周固定是7天,知道现在是周几那么接下来的事情就OK了,至于去年本周应该是方法一比较简单
      

  2.   

    使用 DATEPART ( datepart , date )来确定 天、周、月、季...
    然后使用其它日期函数来确定适当的日期如 DATEPART ( week , '2005-1-1') 的值为1datepart是指定应返回的日期部分的参数。下表列出了 Microsoft&reg; SQL Server&#8482; 识别的日期部分和缩写。日期部分 缩写 
    year yy, yyyy 
    quarter qq, q 
    month mm, m 
    dayofyear dy, y 
    day dd, d 
    week wk, ww 
    weekday dw 
    Hour hh 
    minute mi, n 
    second ss, s 
    millisecond ms 
    week (wk, ww) 日期部分反映对 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定义了 week 日期部分的开始数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此处 xxxx 代表任一年。weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1、Saturday = 7。weekday 日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定星期中的第一天。
      

  3.   

    具体函数说明参看SQL Server联机丛书
      

  4.   

    问题是:
    比如:2005-05-01 是星期日,这时的月份也要改;
    再如:2005-12-31 是星期六,这时的年、月份都要改。很是麻烦!寻求SQL语句解决问题...
      

  5.   

    --其实算法楼上各位已经说得很清楚了,下面是我写的未经包装的一段方法,希望能对你有所帮助Declare @myDate smalldatetime--测试用日期
    Declare @myDayInWeek int--当前周几
    Declare @BeginDate smalldatetime--本周开始日期
    Declare @EndDate smalldatetime--本周结束日期
    Declare @TestDate smalldatetime--测试结果是否正确日期
    select @myDate='2005-05-09'
    print @myDate
    select @myDayInWeek=DatePart(weekday,@myDate)--取得周几
    print @myDayInWeek
    select @BeginDate=DATEADD(day,@myDayInWeek-@myDayInWeek,@myDate)--取得本周开始日期
    print @BeginDate
    select @EndDate=DATEADD(day,7-@myDayInWeek + 1,@myDate)--取得本周结束日期
    print @EndDateselect @TestDate ='2005-05-15'--自己设置检测用日期
    --正确返回1,错误返回0
    select case when @TestDate between @BeginDate and @EndDate then 1 else 0 end