2012-02-01 149 views
0

嗨我需要幫助來創建一個查詢,返回基於日期間隔的結果,但我不能讓它正常工作。帶日期間隔的sql查詢

我想實現的結果讓我用一個日期是一個歷史性的時間跨度內的記錄:

day -1 to -7 */from yesterday and -7 days */  
day -8 to -14 */the date is between -8 and -14 days from today  

對於我用這個where子句的第一區間:

... 
where `invoiceExpDate` >= date_add(now(), INTERVAL - 7 DAY) 

我怎麼修改這個不給我今天的記錄?

對於第二個間隔使用:

... 
where datediff(invoiceExpDate,now())<= 14 
AND datediff(invoiceExpDate,now())> 7 
AND `invoiceExpDate` > now() 

,我不能讓他們的工作。您是否幫我用正確的where子句返回我想要的?

感謝

+0

什麼DBMS?日期函數因平臺之間的差異而臭名昭着。 – 2012-02-01 13:55:11

+0

您的查詢條件無效(完全)。您正在尋找x天範圍內的物品,但是在第二個時間間隔中查找發票的過期日期> now()。這總是會返回一個空集...所有有一箇舊的到期日期比現在更大。 – DRapp 2012-02-01 14:04:20

回答

1

我認爲你可以結合DATE_ADD()和BETWEEN

爲了您的第一條

... 
WHERE `invoiceExpDate` BETWEEN 
    date_add(now(), INTERVAL - 7 DAY) AND 
    date_add(now(), INTERVAL - 1 DAY) 

第二個類似的模式。

+0

是的它的工作。當你知道如何做到這一點時很容易:-)謝謝。 – 2012-02-01 14:23:11

+0

不要忘記標記正確答案,以便其他人知道:) – Bort 2012-02-01 14:44:33

0

LOGDATE之間DATEADD(DD,-7,GETDATE())和 DATEADD(DD,-1,GETDATE())