MySQL最佳方法获取两个日期值之间的所有日期

时间:2013-11-02 14:29:43

标签: mysql sql datetime

我需要查找两个日期内的所有日期。这通常是用

完成的
  

BETWEEN

,但我有一个StartDate和EndDate列。这意味着日期实际上延伸了几天。

所以记录可能有这样的值:

id,status, startDate endDate

如果我给查询两个日期,我怎样才能找到这些日期内的所有行。

1 个答案:

答案 0 :(得分: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。)