首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写一个查询,选择最后一天,并从那里返回1周?

如何编写一个查询,选择最后一天,并从那里返回1周?
EN

Stack Overflow用户
提问于 2014-12-28 14:39:10
回答 3查看 599关注 0票数 0

我在SEDE上使用这个查询。我只是像每周一样编辑WHERE p.CreationDate > '2014-12-21T00:00:00.001',只选择上周的记录。例如,以前的编辑只是从12-14从12-7更改为12-21,等等。

我正试着编辑那个部分,这样我就不用每周都在编辑了。

我在想我能做点什么

代码语言:javascript
复制
WHERE DATEDIFF(DAY, p.creationDate, GETDATE()) <= 7

只会选择过去7天的结果。

然而,这将只在星期日,当SEDE是更新的工作。如果我在星期三运行一个查询,那么这个查询将丢失三天的结果。

我怎么能写这个where语句,喜欢找到最近的星期日,或者是星期日,然后从那里返回一个星期?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-28 15:04:40

要找到previous sunday,请使用这段代码。

代码语言:javascript
复制
select DateAdd(dd, -1, DateAdd(wk, DateDiff(wk, 0, getdate()), 0)) [Previous Sunday]

Where clause应该类似于。

代码语言:javascript
复制
Select ... from tablename 
WHERE DATEDIFF(DAY, p.creationDate, DateAdd(dd, -1, DateAdd(wk, DateDiff(wk, 0, getdate()), 0))) <= 7
票数 2
EN

Stack Overflow用户

发布于 2014-12-28 14:58:32

有几种解决方案,类似于此。用以下内容替换where子句中的GetDate

代码语言:javascript
复制
 Cast(DateAdd(day,-DatePart(weekday,GetDate())+1,GetDate()) as Date)

其中+1调整得更大或更小,以移动到您想要开始的一周中的特定一天。+1会导致这个星期天发生变化。

票数 1
EN

Stack Overflow用户

发布于 2014-12-28 15:03:53

代码语言:javascript
复制
-- Assuming your db @@DATEFIRST in on sunday (i.e 7)

WHERE p.creationdate >= DATEADD( day, -6 - DATEPART(weekday,GETDATE()), GETDATE() )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27677393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档