首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datediff GETDATE添加

Datediff GETDATE添加
EN

Stack Overflow用户
提问于 2012-02-07 07:24:50
回答 4查看 17.4K关注 0票数 0

在这类代码中,

代码语言:javascript
复制
AND Orders.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -6), 0)

它应该提取6天前的记录,直到今天。我怎么才能让它拉取7天前到昨天的记录?

我知道将-6更改为-7将拉取7天前的记录,但是哪个变量是日期跨度的末尾,因此我可以将其更改为-1

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-07 07:31:06

这不是一个日期跨度。

你所拥有的条件实际上只有一个:大于。大于的右侧是6天前,因此您的条件匹配任何晚于6天前的日期。换句话说,它不会止步于今天;它还包括明天、下周和明年。

代码语言:javascript
复制
AND ( Orders.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -7), 0)
      AND Orders.ShipDate < DATEADD(Day, Datediff(Day,0, GetDate()), 0) )

这才是你真正想要的。它匹配早于7天前一天午夜的日期,以及今天午夜之前的日期(即昨天的任何时间)。

票数 1
EN

Stack Overflow用户

发布于 2012-02-07 07:27:56

“日期跨度结束”不在您的查询中。

将您的代码更改为:

AND (DATEADD (Orders.ShipDate,-1,GetDate())和DATEADD(Day,-7,GetDate())之间的Orders.ShipDate)

票数 0
EN

Stack Overflow用户

发布于 2012-02-07 08:16:45

这也应该是有效的,它消除了不必要的0天的增加:

代码语言:javascript
复制
select *,DATEDIFF(Day, orders.ShipDate, GETDATE()) AS DAYS_SINCE_TODAY
from Orders 
where DATEDIFF(Day, orders.ShipDate, GETDATE()) >= 1 AND --This many days since today
      DATEDIFF(Day, orders.ShipDate, GETDATE()) <= 7     --Going back this many days
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9168871

复制
相关文章

相似问题

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