如何在SQL Server 2005中获取记录。输入将是工作日日期。输出应该是该日期之前那一周的所有记录。例如,如果我给出一个星期三的日期,我应该从星期一到星期三得到所有记录。
我已经尝试过在工作日作为输入的特定周内获取所有记录。但我希望记录直到星期一的给定日期。
where RD.Date > DATEADD(dd, -(DATEPART(dw, @Date)-1), @Date) and RD.Date < DATEADD(dd, 7-(DATEPART(dw, @Date)), @Date)
感谢您的帮助!!
答案 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设置的值。