2

我正在尝试加入两个表,但问题是作为一个条件,我需要他们的字段“时间”大致相同。

让我写得清楚一点,这是我到现在为止的想法。

SELECT location
FROM retailer
LEFT JOIN imovo
ON retailer.time=imovo.time.

现在,我真正需要的不是这个:retailer.time=imovo.time,但我需要零售商表中字段的秒数与 imovo 时间字段之间的差异不大于 4 秒。

让我解释一下,假设零售商的时间字段显示:11:11:23 如果来自 imovo 的时间介于 11:11:23 和 11:11:26 之间,我应该加入这两个表

那么,你能帮我解决这个问题吗?谢谢!

4

5 回答 5

1

我没有对此进行测试,但我认为它应该可以工作:

imovo.time between retailer.time and retailer.time + interval 4 second
于 2012-08-15T20:59:54.547 回答
1
...
ON addtime(retailer.time, '0:0:4')<imovo.time
AND retailer.time >imovo.time

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_addtime http://dev.mysql.com/doc/refman/5.5/en/date-and -time-functions.html#function_subtime

于 2012-08-15T21:00:59.917 回答
0

在小时和分钟上进行连接并添加 where 子句作为

伪代码,其中 (imovo.time - Retailer.time) < 4 秒

于 2012-08-15T20:54:22.370 回答
0

如果您想按照早期海报的建议进行操作,并按小时和分钟加入,您可以尝试内置的 HOUR 和 MINUTE 功能。看:

参考资料和有用的页面:

[引用历史记录]

于 2012-08-15T21:08:58.973 回答
0

我认为 MySQL 不支持 INTERVAL (无法在手册中快速找到它),如果 ti 支持,请将@grossvogel 的答案与 +/- 4 混合,以使您的保证金在双方都有效。

SELECT location
FROM retailer
LEFT JOIN imovo
ON TO_SECONDS(imovo.time) BETWEEN TO_SECONDS(retailer.time) - 4 AND TO_SECONDS(retailer.time) + 4
于 2012-08-15T21:09:21.013 回答