我尝试为iPhone创建一个可以设置约会的应用程序。一切都保存到MySQL数据库中,我目前通过JSON将数据导入我的应用程序。这是一个工作流程
当没有现有的约会时,可以保存。如果已经存在,例如上午8点15分 - 上午8点45分,将显示错误。
你能否告诉我如何做到这一点?我正在考虑使用NSDate“startDate”和“endDate”的课程,但我不确定如何检测那些约会碰撞。
非常感谢,每个提示都很受欢迎。
答案 0 :(得分:0)
如果符合以下条件,则约会有效:
约会在用户的工作时间内;以及
它不会与现有的约会冲突,这可能以三种可能的方式发生:
在新任命期间开始冲突任命;和/或
冲突的约会在新任命期间结束;或
冲突约会在新约会之前和之后开始。
您可以在纯SQL中使用以下内容进行查询:
SELECT EXISTS (
SELECT *
FROM appointments a JOIN workhours h USING (user_id)
WHERE user_id = 1
AND h.start <= '08:00:00' AND h.end >= '09:00:00'
AND (
a.start BETWEEN '08:00:00' AND '09:00:00'
OR a.end BETWEEN '08:00:00' AND '09:00:00'
OR (a.start < '08:00:00' AND a.end > '09:00:00')
)
LIMIT 1
)
请注意在事务中使用锁定读取执行此SELECT
以防止并发问题。