Я бьюсь головой об этом: мне нужно выбрать все записи вверх или вниз "рядом" с отметкой времени другой записи в течение 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
Скажем, я буду использовать идентификатор записи 846 в качестве основной метки времени и хочу получить все записи в течение 5 минут, ожидаемый результат должен быть: от 850 до 842, исключая 851 и 841 , 840. Как в мире я могу это сделать? :)
Итак, наконец, чтобы получить эти записи в течение одной минуты, я получил кое-что, используя это (я буду знать заранее) это будет идентификатор записи, который будет использоваться в качестве основной точки для поиска ближайших записей):
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