2013-11-02 177 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小,当然)。

相关问题