我在SEDE上使用这个查询。我只是像每周一样编辑WHERE p.CreationDate > '2014-12-21T00:00:00.001',只选择上周的记录。例如,以前的编辑只是从12-14从12-7更改为12-21,等等。
我正试着编辑那个部分,这样我就不用每周都在编辑了。
我在想我能做点什么
WHERE DATEDIFF(DAY, p.creationDate, GETDATE()) <= 7只会选择过去7天的结果。
然而,这将只在星期日,当SEDE是更新的工作。如果我在星期三运行一个查询,那么这个查询将丢失三天的结果。
我怎么能写这个where语句,喜欢找到最近的星期日,或者是星期日,然后从那里返回一个星期?
发布于 2014-12-28 15:04:40
要找到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发布于 2014-12-28 14:58:32
有几种解决方案,类似于此。用以下内容替换where子句中的GetDate
Cast(DateAdd(day,-DatePart(weekday,GetDate())+1,GetDate()) as Date)其中+1调整得更大或更小,以移动到您想要开始的一周中的特定一天。+1会导致这个星期天发生变化。
发布于 2014-12-28 15:03:53
-- Assuming your db @@DATEFIRST in on sunday (i.e 7)
WHERE p.creationdate >= DATEADD( day, -6 - DATEPART(weekday,GETDATE()), GETDATE() )https://stackoverflow.com/questions/27677393
复制相似问题