2012-02-01 116 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())