0

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

之间

,但我有一个 StartDate 和 en EndDate 列。这意味着日期实际上会持续几天。

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

id、状态、开始日期结束日期

如果我给查询提供两个日期,我如何找到这些日期内的所有行。

4

1 回答 1

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。)

于 2013-11-02T14:36:41.647 回答