例如,如果我有两个表,communication
和 movement
两者都有一个名为 ID
的列和 timestamp
,我有一个查询,通常看起来像这样:
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'
那么我该如何实现呢?
任何帮助将不胜感激,谢谢!
编辑
最后我用的是这个:
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
关于mysql - SQL - 如何使用 BETWEEN (mysql) 获取时间戳范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790020/