SQL - 如何使用 BETWEEN (mysql) 获取一系列时间戳?

SQL - How to get a range of timestamps using BETWEEN (mysql)?

例如,如果我有两个表,communicationmovement,它们都有一个名为 IDtimestamp 的列,并且我有一个查询通常看起来像这样:

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;

这会在 m.timestamp <= c.timestamp 时找到给定 movement 时间戳的最接近 communication 时间戳,即 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'

那么我该如何实现呢?

任何帮助将不胜感激,谢谢!!

编辑

最后我用了这个:

WHERE m.timestamp BETWEEN TIMESTAMPADD(SECOND,-10,c.timestamp) 
AND TIMESTAMPADD(SECOND,10,c.timestamp); 

只需使用 interval 关键字:

WHERE m.timestamp BETWEEN c.timestamp - interval 10 second AND
                          c.timestamp + interval 10 second