在我的数据库中,我有许多记录,包括该时间段的开始日期和长度。
例如
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
所以我可以很容易地得到结束日期。
现在,如果用户给了我任何时间段,我如何控制该时间段是否包含在我在数据库中的一个时间段内?
谢谢。
答案 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;
也就是说,用户给你的时间在间隔结束之前开始,而时间段在间隔开始之后结束。