【问题标题】:check for date clashes between start and end datetime ( db column has start and end dates )检查开始日期时间和结束日期时间之间的日期冲突(db 列有开始日期和结束日期)
【发布时间】:2011-10-30 04:01:23
【问题描述】:

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

下面是我的桌子:

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

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

需要帮助。在此先感谢您。

【问题讨论】:

    标签: mysql sql


    【解决方案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))
    

    【讨论】: