在mysql中选择两次之间的第一个免费日期时间

时间:2014-03-24 01:47:32

标签: mysql datetime between elapsedtime

我希望找到一个最佳的约会时间,之前有20分钟的空闲时间,并且过去至少还有20分钟。 所以

在数据库中:

  1. 2014-03-24 10:30
  2. 2014-03-24 11:10
  3. 2014-03-24 12:00
  4. 2014-03-24 12:30
  5. 如果我在11:15跑步,我想得到2014-03-24 11:30,因为11-30-11:10 = 20和12:00-11:30> = 20.

    所以,我需要在数据库中选择一个日期时间而不是一行(并在以后插入)。我需要找到数据库中前后20-20分钟空白期的最近日期。否则,我正在寻找数据库中的40分钟洞并获得中间位置。

    这可以在mysql查询中解决吗? 谢谢:))

1 个答案:

答案 0 :(得分:1)

要获取超过20分钟前的最新时间戳:

select *
from table t
where datetimefield < now() - interval 20 minutes
order by datetimefield desc
limit 1;

如果你只想限制20分钟后没有时间戳的那些:

select *
from table t
where datetimefield < now() - interval 20 minutes and
      not exists (select 1
                  from table t2
                  where t2.datetimefield between t.datetimefield and t.datetimefield + interval 20 minutes
                )
order by datetimefield desc
limit 1;