在這種類型的代碼,DATEDIFF GETDATE添加
AND Orders.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -6), 0)
它應該拉記錄的日期5天前,直至今日。我怎樣才能使它從7天前到昨天拉記錄?
我知道改變-6
到-7
會拉記錄從7天前,但變量是日期跨度的結束,所以我可以將其更改爲-1
?
在這種類型的代碼,DATEDIFF GETDATE添加
AND Orders.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -6), 0)
它應該拉記錄的日期5天前,直至今日。我怎樣才能使它從7天前到昨天拉記錄?
我知道改變-6
到-7
會拉記錄從7天前,但變量是日期跨度的結束,所以我可以將其更改爲-1
?
這不是一個日期跨度。
你在那裏的狀況實際上只有一個條件:大於。大於6天前的右側,因此您的條件與6天前日期之後的任何日期相匹配。換句話說,它不會停留在今天;它包括明天,下週和明年。
AND (Orders.ShipDate >= DATEADD(Day, Datediff(Day,0, GetDate() -7), 0)
AND Orders.ShipDate < DATEADD(Day, Datediff(Day,0, GetDate()), 0))
這就是你真正想要的。它匹配比7天前的午夜晚的日期,以及今天午夜前的日期(這是昨天的任何時間)。
「日期範圍結束」不在您的查詢中。
你的代碼更改爲:
AND(BETWEEN DATEADD(天,-1,GETDATE())AND DATEADD(日,-7,GETDATE())Orders.ShipDate)
我會在哪裏把這個? – henryaaron 2012-02-06 23:41:32
@ user1090389:以上是清潔器。 – NotMe 2012-02-06 23:46:32
這應該也和它消除了不必要的另外的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 days
我喜歡的功能之間。這可能與您使用的SQL不同,但這是我使用的。
BETWEEN dateadd(second, 0, dateadd(dd,datediff(dd,7,getdate()),0)) AND dateadd(second,-1, dateadd(dd,datediff(dd,0,getdate()),0))
我越來越 – henryaaron 2012-02-06 23:40:51
你在那裏有一個額外的括號錯誤 – henryaaron 2012-02-06 23:44:07