首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间戳略有差异的两个不同数据库的表之间的连接(MySQL)

问时间戳略有差异的两个不同数据库的表之间的连接(MySQL)
EN

Stack Overflow用户
提问于 2018-01-21 22:06:25
回答 2查看 111关注 0票数 1

按照MySQL -- join between tables in 2 different databases?的建议,我使用以下格式从不同的mysql数据库检索具有跨两个表的共享列值的数据。

代码语言:javascript
复制
SELECT <...>
FROM A.table1 t1 JOIN B.table2 t2 ON t2.column2 = t1.column1;

我想从表中获取相同日期、小时和分钟的共享值。然而,我意识到,由于我的两个表的时间戳列中的时间戳值(来自不同的数据库)在记录的秒数2018-01-21 23:30:05与2018-01-21 23:30:15方面略有不同,因此我无法检索任何公共数据。我如何修改我的查询,以便我可以在两个不同数据库的两个表之间查询关于时间戳值的公共数据,同时忽略时间戳列的‘秒’部分?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-21 22:11:21

您可以使用

代码语言:javascript
复制
 ON t2.datestamp BETWEEN t1.datestamp - INTERVAL 2 SECOND
                     AND t1.datestamp + INTERVAK 2 SECOND

用于JOIN操作中的ON子句。这将为比赛提供4秒的窗口。

当然,如果你把窗口设置得太大,你会得到一些你不想要的匹配,如果你把它设置得太窄,你会错过一些。

票数 1
EN

Stack Overflow用户

发布于 2018-01-21 22:42:24

虽然我认为O.Jones的答案是解决问题的更好方法,但如果你真的需要比较两个时间戳“忽略‘秒’部分”,你可以这样做:

代码语言:javascript
复制
SELECT <...>
FROM A.table1 t1
JOIN B.table2 t2
  ON t2.column2 BETWEEN date_format(t1.column1, '%Y-%m-%d %H:%i:00')
                    AND date_format(t1.column1, '%Y-%m-%d %H:%i:59')

或者更准确地说:

代码语言:javascript
复制
  ON  t2.column2 >= date_format(t1.column1, '%Y-%m-%d %H:%i:00')
  AND t2.column2 <  date_format(t1.column1, '%Y-%m-%d %H:%i:00') + interval 1 minute

或

代码语言:javascript
复制
  ON  t2.column2 >= t1.column1 - interval second(t1.column1) second
  AND t2.column2 <  t1.column1 - interval second(t1.column1) second + interval 1 minute
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48367641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档