我在SEDE上使用this query。我刚刚每周都在编辑WHERE p.CreationDate > '2014-12-21T00:00:00.001'
,只选择上周的记录。因此,例如之前的编辑只是从12-7改为12-21,等等。
我正在尝试编辑该部分,以便我不必每周都继续编辑它。
我以为我可以做点什么
WHERE DATEDIFF(DAY, p.creationDate, GETDATE()) <= 7
将仅选择过去7天的结果。
然而,这仅适用于更新SEDE时的星期日。如果我在星期三运行查询,则此查询将缺少三天的结果。
我怎么能写这个where
声明来找到最近的星期日,或星期日,然后从那里回来一周?
答案 0 :(得分:2)
要查找previous sunday
,请使用此代码。
select DateAdd(dd, -1, DateAdd(wk, DateDiff(wk, 0, getdate()), 0)) [Previous Sunday]
Where clause
应该是类似的。
Select ... from tablename
WHERE DATEDIFF(DAY, p.creationDate, DateAdd(dd, -1, DateAdd(wk, DateDiff(wk, 0, getdate()), 0))) <= 7
答案 1 :(得分:1)
有几种解决方案,与此类似。 用where
之类的东西替换where子句中的GetDate Cast(DateAdd(day,-DatePart(weekday,GetDate())+1,GetDate()) as Date)
其中+1被调整得更大或更小,以移动到您想要开始的一周中的特定日期。 +1导致这个星期天。
答案 2 :(得分:0)
-- Assuming your db @@DATEFIRST in on sunday (i.e 7)
WHERE p.creationdate >= DATEADD( day, -6 - DATEPART(weekday,GETDATE()), GETDATE() )