正在为这个问题努力奋斗:我需要在n分钟内“靠近”另一条记录的时间戳来选择所有记录。我看到的示例使用NOW(),但是我的问题是我需要使用记录的时间戳而不是当前时间。示例:
ID timestamp
851 2020-04-17 12:56:02
850 2020-04-17 09:40:01
849 2020-04-17 09:39:02
848 2020-04-17 09:39:01
847 2020-04-17 09:36:02
**846 2020-04-17 09:36:02**
845 2020-04-17 09:36:02
844 2020-04-17 09:36:01
843 2020-04-17 09:36:01
842 2020-04-17 09:31:01
841 2020-04-17 09:11:02
840 2020-04-16 22:13:02
说我将使用记录ID 846作为主要时间戳,并希望在5分钟之内获取所有记录,我期待的结果应该是:850至842,不包括851和841、840。我能做到的世界?:)
最后,为了在一分钟内获得这些记录,我使用了一些东西(我会知道正手,这将是记录ID,将其用作查找附近记录的主要点):
SELECT
Id,
date_in,
FROM t
WHERE (TIMESTAMPDIFF(MINUTE, date_in,
(SELECT date_in FROM t WHERE Id = 846)
) = 0
)
ORDER BY Id DESC LIMIT 20
ID timestamp
847 2020-04-17 09:36:02
**846 2020-04-17 09:36:02**
845 2020-04-17 09:36:02
844 2020-04-17 09:36:01
843 2020-04-17 09:36:01
答案 0 :(得分:0)
所以要使用大于1分钟的范围,我想出了这一点,效果很好,但我不知道这是否是正确的方法。这是在20分钟内以某人的时间戳为起点来选择记录:
SELECT
Id,
date_in,
FROM t
WHERE (TIMESTAMPDIFF(MINUTE, date_in,
(SELECT date_in FROM t WHERE Id = 846)
) = < 20
)
AND
(TIMESTAMPDIFF(MINUTE, date_in,
(SELECT date_in FROM t WHERE Id = 846)
) = > -20
)
ORDER BY Id DESC LIMIT 20
ID timestamp
850 2020-04-17 09:40:01
849 2020-04-17 09:39:02
848 2020-04-17 09:39:01
847 2020-04-17 09:36:02
**846 2020-04-17 09:36:02**
845 2020-04-17 09:36:02
844 2020-04-17 09:36:01
843 2020-04-17 09:36:01
842 2020-04-17 09:31:01