我需要查找两个日期内的所有日期。这通常是用
完成的BETWEEN
,但我有一个StartDate和EndDate列。这意味着日期实际上延伸了几天。
所以记录可能有这样的值:
id,status, startDate , endDate
如果我给查询两个日期,我怎样才能找到这些日期内的所有行。
答案 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
。)