如何选择在过去X个月的一周中的X天插入的结果



我必须收集一个表中的所有行,这些行是在过去三个月的星期一插入的。我将如何编写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)
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')

最新更新