检查开始和结束日期时间之间的日期冲突(db列有开始和结束日期)

时间:2011-10-29 19:25:20

标签: mysql sql

需要有关sql(mysql查询)的帮助,以检查所选的“startdate”和“enddate”是否在该范围内没有任何记录。

波罗是我的桌子:

---------------------------------------------------------
| 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  |
---------------------------------------------------------

我希望这篇文章对其他人也有用。开始和结束列都是日期时间数据类型。基本上我要做的查询是检查活动冲突。

需要帮助。提前谢谢你。

1 个答案:

答案 0 :(得分: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))