2013-11-02 91 views
0

我需要查找兩個日期內的所有日期。這通常與MySQL最佳方法獲取兩個日期值之間的所有日期

之間

做,但我有一個起始日期和結束日期恩柱。這意味着日期實際上延續了幾天。

所以記錄可以有這樣的價值觀:

ID,狀態,的startDate結束日期

我怎樣才能找到所有的行,是這些日期內,只要我給查詢兩個日期。

+0

你想返回其記錄日期範圍完全在提供的日期內,日期範圍完全包含提供的日期的記錄,或日期範圍與提供的日期有任何重疊的記錄? –

+0

我希望在提供的兩個日期內和之後提供所有日期。 – Jazerix

+0

我想要那些包含... – Jazerix

回答

2

爲了得到記錄,其中完整的記錄期間就在於這一期間:

SELECT * 
FROM yourtable 
WHERE startDate >= smallestDate AND 
     endDate <= largestDate; 

爲了得到記錄,其中記錄時段相交的要求期間:

SELECT * 
FROM yourtable 
WHERE startDate <= largestDate AND 
     endDate >= smallestDate; 

而且,出於完整性考慮,獲取記錄期間開始時間位於請求期間的記錄,但您不在乎記錄期間結束:

SELECT * 
FROM yourtable 
WHERE startDate BETWEEN smallestDate AND largestDate 

而且,反之亦然,備案期限的結束日期:

SELECT * 
FROM yourtable 
WHERE endDate BETWEEN smallestDate AND largestDate 

(所有例子startDate總是比endDate小,當然)。

相關問題