2011-10-29 117 views
1

需要帮助sql(mysql查询)检查选定的'startdate'和'enddate'在该范围内没有任何记录。检查日期开始日期和结束日期之间的冲突(db列有开始日期和结束日期)

波纹管是我的表:

--------------------------------------------------------- 
| id | start   |  end   |activity| 
--------------------------------------------------------- 
| 1 |2011-10-30 13:00:00 |2011-10-30 14:00:00 | study | 
| 2 |2011-10-30 15:00:00 |2011-10-30 16:00:00 | tennis | 
| 3 |2011-10-30 17:00:00 |2011-10-30 18:00:00 | golf | 
| 4 |2011-10-30 18:00:00 |2011-10-30 19:00:00 | gym | 
| 5 |2011-10-30 20:00:00 |2011-10-30 21:00:00 | study | 
--------------------------------------------------------- 

我希望这篇文章将是有益他人的well.The开始和结束列datetime数据type.Basically我试图做的查询是检查活动冲突。

需要帮助。提前感谢您。

回答

1

基本上,您需要查看一条记录的开始日期或结束日期是否在另一行的开始日期和结束日期之内。我做了一个INNER JOIN。您也可以用WHERE'子句来代替。

Select [your fields] 
From table t1 
      Inner join table t2 
      On t1.id <> t2.id 
       And ((t1.start > t2.start 
        And t1.start < t2.end) 
        Or 
        (t1.end > t2.start 
        And t1.end < t2.end)) 
+0

Thanks @Conrad Frix,它的工作原理:D –

相关问题