检查sqlite中特定时间间隔内的时间

时间:2014-08-21 09:36:34

标签: android sqlite datetime overlap nstimeinterval

嗨我需要在我的Android应用程序检查特定时间间隔内的时间。时间存储在SQlite DB中。

如何选择检查用户选择的时间间隔是否与DB内的时间间隔冲突?

例如,如果用户从6 00到18 00选择时间,则他不应该在时间6 00到18 00之间添加另一个时间间隔。如果用户提取时间为9 00,那么它在06 00 - 18 00之内且此时间已经在DB中。知道如何做到这一点。

这是我的选择,但不是很好。

SELECT EXISTS(SELECT 1 FROM nepritomnosti
              WHERE id = '821'
                AND dBeginDate = '2014-08-13'
                AND ((strftime( '%s', tBeginTime ) <= strftime( '%s', '17:00' ))
                AND  (strftime( '%s', tEndTime )   >= strftime( '%s', '21:00' )))
              LIMIT 1)

1 个答案:

答案 0 :(得分:2)

这不是检查两个区间是否重叠的正确公式。

您需要交换另一个间隔的两个端点;如果他们被称为tMin / tMax

tBeginTime <= tMax AND tEndTime >= tMin