检查另一个时间段内是否包含时间段

时间:2014-01-20 15:06:27

标签: sql

在我的数据库中,我有许多记录,包括该时间段的开始日期和长度。

例如

id start_date           lenght
1  2013-01-01 00:00:00   20
2  2013-02-30 00:00:00   10
3  2013-01-20 00:00:00   3

所以我可以很容易地得到结束日期。

现在,如果用户给了我任何时间段,我如何控制该时间段是否包含在我在数据库中的一个时间段内?

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用where子句和date函数获取列表:

select *
from t
where XXX between start_date and date_add(start_date, interval length day);

编辑:

以上是一个日期。如果用户给出两个日期,XXX和YYY,那么这就是你想要的任何重叠:

select *
from t
where XXX <= date_add(start_date, interval length day) and
      YYY >= start_date;

也就是说,用户给你的时间在间隔结束之前开始,而时间段在间隔开始之后结束。