3

我必须收集表中的所有行,它们在过去 3 个月的星期一插入。我将如何编写 WHERE 子句日期来获得这些结果?

WHERE Date = (wk, DATEDIFF(wk,0,GETDATE()), 0)

这将选择本周星期一的所有内容,但我遇到的问题是选择三个月前的星期一范围。

谢谢!

所以这是我最终得到的 WHERE 子句,对我来说效果很好......

where Datestamp > dateadd(month, -3, getdate())
AND datepart(weekday, Datestamp) = datepart(weekday, DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0))

我只更改了我们输入从星期一开始的星期几的部分我添加了这个......

DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)
4

1 回答 1

4
WHERE Date > dateadd(month, -3, getdate())
AND datepart(weekday, Date) = 1

这是两个不同的条件;无需将它们压缩成一个。

注意:在您的机器上运行测试以查看您获得的datepart(weekday, @AMondayDate). 在某些系统上,星期一是 1,在其他系统上是 2;这取决于DATEFIRST 配置

更新:

感谢ErikE巧妙地解决了工作日数字问题:

WHERE Date > dateadd(month, -3, getdate())
AND datepart(weekday, Date) = datepart(weekday, '2012-11-25')
于 2012-11-21T21:39:47.517 回答