获取从给定日期开始的一周的记录

时间:2013-08-27 15:04:31

标签: sql sql-server-2005

如何在SQL Server 2005中获取记录。输入将是工作日日期。输出应该是该日期之前那一周的所有记录。例如,如果我给出一个星期三的日期,我应该从星期一到星期三得到所有记录。

我已经尝试过在工作日作为输入的特定周内获取所有记录。但我希望记录直到星期一的给定日期。

where RD.Date > DATEADD(dd, -(DATEPART(dw, @Date)-1), @Date) and RD.Date < DATEADD(dd, 7-(DATEPART(dw, @Date)), @Date)

感谢您的帮助!!

2 个答案:

答案 0 :(得分:3)

这个怎么样?

 WHERE RD.Date BETWEEN DATEADD(wk, DATEDIFF(wk,0,@Date), 0) AND @Date

我知道在SQL Server中,BETWEEN强制进行包容性搜索,因此您可以执行&gt;和&lt;反对RD.DATE

答案 1 :(得分:2)

这应该有效:

SET DATEFIRST 1
...
WHERE RD.Date >= DATEADD(dd, (-1) * (DATEPART(dw, @Date) - 1), @Date)
AND   RD.Date < DATEADD(dd, 1, @Date) -- inclusive

DATEPART(dw, @Date)返回一周中的日期编号,因此在周三它会返回3.但是因为你想要包含星期一我需要减去1。

MSDN根据Lamak的评论:

  

当datepart是星期(wk,ww)或工作日(dw)时,返回值   取决于使用SET DATEFIRST设置的值。