mysql - SQL - 如何使用 BETWEEN (mysql) 获取时间戳范围?

标签 mysql sql timestamp

例如,如果我有两个表,communicationmovement两者都有一个名为 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/

相关文章:

php - 带负时间戳的 datetime php fatal error

C# - MySQL 与 Microsoft SQL Server

MySQL 5.6 InnoDB count、group by、having 和 order by 返回错误结果

PHP 最佳实践 : Im loading the $GLOBALS array with a lot of information to be shared between my php pages

php - SQL : How to reduce multiple time querying the same table ..查询优化

php - 仅显示数据库中超过两个月的条目

mysql - SQL - 从插入的一个字段复制 LEFT 300 个字符到新字段

python - Amazon Redshift 查询和区分大小写

sql - 没有连接的插入语句会导致先前不存在重复项的重复项?

Python 将每月和分钟数据帧与 TZ 感知的日期时间索引相结合