在这类代码中,
AND Orders.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -6), 0)它应该提取6天前的记录,直到今天。我怎么才能让它拉取7天前到昨天的记录?
我知道将-6更改为-7将拉取7天前的记录,但是哪个变量是日期跨度的末尾,因此我可以将其更改为-1
发布于 2012-02-07 07:31:06
这不是一个日期跨度。
你所拥有的条件实际上只有一个:大于。大于的右侧是6天前,因此您的条件匹配任何晚于6天前的日期。换句话说,它不会止步于今天;它还包括明天、下周和明年。
AND ( Orders.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -7), 0)
AND Orders.ShipDate < DATEADD(Day, Datediff(Day,0, GetDate()), 0) )这才是你真正想要的。它匹配早于7天前一天午夜的日期,以及今天午夜之前的日期(即昨天的任何时间)。
发布于 2012-02-07 07:27:56
“日期跨度结束”不在您的查询中。
将您的代码更改为:
AND (DATEADD (Orders.ShipDate,-1,GetDate())和DATEADD(Day,-7,GetDate())之间的Orders.ShipDate)
发布于 2012-02-07 08:16:45
这也应该是有效的,它消除了不必要的0天的增加:
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 dayshttps://stackoverflow.com/questions/9168871
复制相似问题