选择与特定日期重叠的日期范围

时间:2012-12-12 14:38:16

标签: php mysql sql

让我们在下面说这个表。

ID | Startdate           | Enddate
-----------------------------------------------
1  | 2012-12-12 08:00:00 | 2012-12-15 18:30:00
-----------------------------------------------
2  | 2012-12-11 00:00:00 | 2012-12-16 00:00:00
-----------------------------------------------
3  | 2012-12-16 08:00:00 | 2012-12-17 18:30:00
-----------------------------------------------
4  | 2012-12-13 00:00:00 | 2012-12-14 11:30:00
-----------------------------------------------

所选日期范围为Id 1,2012-12-12 08:00:00至2012-12-15 18:30:00。 我想选择任何日期范围内的日期。

正确的ID为2和4。 希望你们明白,如果有任何问题请随时问。 谢谢。

2 个答案:

答案 0 :(得分:2)

select d1.*
from
  dates d1 inner join dates d2
  on d2.id=1 and d1.Startdate<d2.Enddate and d1.Enddate>d2.Startdate
where d1.id<>1

答案 1 :(得分:1)

SELECT t1.*
FROM YourTable t1
INNER JOIN
(
   SELECT StartDate, EndDate
   FROM YourTable 
   WHERE Id = 1
) t2 ON t2.StartDate < t1.StartDate AND t2.EndDate > t1.EndDate