Так, например, если у меня было две таблицы, communication
и movement
, что оба имеют столбцы с именем ID
и timestamp
, и у меня был запрос, который обычно выглядел примерно так:SQL - Как получить диапазон временных меток с использованием BETWEEN (mysql)?
SELECT * FROM movement m
JOIN communication c
ON m.ID = c.ID
WHERE m.timestamp <= c.timestamp
ORDER BY abs(TIMESTAMPDIFF(second,ctstamp,m.timestamp))
LIMIT 1;
Это находит ближайший communication
метку времени для заданной movement
отметки времени, когда m.timestamp <= c.timestamp
, то есть, когда movement timestamp
меньше, чем communication timestamp
. Но это не все m.timestamp >= c.timestamp
.
То, что я хочу сделать, это создать ряд как 10 секунд с обеих сторон, так что было бы:
WHERE m.timestamp BETWEEN c.timestamp-10 secs AND c.timestamp+10 secs
так, если communication timestamp
был '2012-03-02|09:02:30'
, то это было бы:
WHERE m.timestamp BETWEEN '2012-03-02|09:02:20' AND '2012-03-02|09:02:40'
Итак, как бы реализовать это?
Любая помощь будет принята с благодарностью, спасибо!
EDIT
В конце концов, я использовал это:
WHERE m.timestamp BETWEEN TIMESTAMPADD(SECOND,-10,c.timestamp)
AND TIMESTAMPADD(SECOND,10,c.timestamp);
Спасибо! Мне нужно было бы «интервал» пользователя в сочетании с ['timestampadd()'] (https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampadd), правильно? Вроде как в [this] (http://stackoverflow.com/questions/2793619/working-with-interval-and-curdate-in-mysql) вопрос? – ocean800