首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到哪两行的时间戳彼此最接近?

如何找到哪两行的时间戳彼此最接近?
EN

Stack Overflow用户
提问于 2012-08-03 20:21:59
回答 6查看 2K关注 0票数 3

我正在构建一个基于位置的签到web应用程序,有点像本地的4square,但基于RFID标签。

无论如何,每次签入都存储在一个MySQL表中,其中userID和签入时间作为DATETIME列。

现在我想展示一下哪些用户在不同车站之间的签到时间最短。

解释:假设用户A在21:43:12签到,然后在21:43:19再次签到。他在7秒内在站点之间移动。

数据库中有数以千计的签到,如何编写SQL来选择两个最接近的签入时间的用户?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-08-03 20:31:17

非常快的解决方案会引入一些预计算。比如存储当前签入和之前签入之间的差异。

在这种情况下,您将以快速方式选择所需内容(只要您按索引覆盖该列)。

在这种情况下,不使用预计算将导致可怕的查询,这些查询将在类似笛卡尔的产生式上操作。

票数 1
EN

Stack Overflow用户

发布于 2012-08-03 20:27:01

试试这个:

代码语言:javascript
复制
select
    a.id,
    b.id,
    abs(a.rfid-b.rfid)
from
    table1 a,
    table1 a
where
    a.userID=b.userID
    // and any other conditions to make it a single user
group by
    a.id,
    b.id,
    a.rfid,
    b.rfid
order by
    abs(a.rfid-b.rfid) desc
limit 1
票数 1
EN

Stack Overflow用户

发布于 2012-08-03 20:26:49

你试过什么?你看过DATEDIFF http://msdn.microsoft.com/en-us/library/ms189794.aspx吗?

干杯--乔克

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11795653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档