Sql server 2008 如何连接略有不同的时间

Sql server 2008 如何连接略有不同的时间,sql-server-2008,join,Sql Server 2008,Join,我想链接两个日志表,但每个表中的条目不是在完全相同的时间完成的,时差会有所不同,但应该始终在一秒钟之内 为了简单起见,假设表A如下所示: ItemId int Comment varchar(50) LogTime datetime 假设表B具有完全相同的结构 假设这些记录在表A中: ItemId Comment LogTime ----------------------------------- 100 Test100-A1 12:00:00.00 20

我想链接两个日志表,但每个表中的条目不是在完全相同的时间完成的,时差会有所不同,但应该始终在一秒钟之内

为了简单起见,假设表A如下所示:

ItemId int
Comment varchar(50)
LogTime datetime
假设表B具有完全相同的结构

假设这些记录在表A中:

ItemId    Comment       LogTime
-----------------------------------
100       Test100-A1    12:00:00.00
200       Test200-A     12:00:03.50
100       Test100-A2    12:00:06.30
这些都在表B中

ItemId    Comment       LogTime
-----------------------------------
100       Test100-B1    12:00:00.03
200       Test200-B     12:00:02.98
100       Test100-B2    12:00:06.53
我想得到以下输出

A.ItemId    A.Comment   A.LogTime     B.ItemId    B.Comment   B.LogTime     
-------------------------------------------------------------------------
100         Test100-A1  12:00:00.00   100         Test100-B1  12:00:00.03
200         Test200-A   12:00:03.50   200         Test200-B   12:00:02.98
100         Test100-A2  12:00:06.30   100         Test100-B2  12:00:06.53

我如何创建一个查询,以这种方式在ItemId和LogTime上将两个表链接在一起,但LogTime在两个方向上都有1秒的变化?

我想出来了。。。实际上比我意识到的要简单一点

select *
from   A left join
       B on A.ItemId = B.ItemId and
            abs(DATEDIFF(ss, A.LogTime, B.LogTime)) <= 1
选择*
从左连接
B在A.ItemId上=B.ItemId和

abs(DATEDIFF(ss,A.LogTime,B.LogTime))我猜出来了。。。实际上比我意识到的要简单一点

select *
from   A left join
       B on A.ItemId = B.ItemId and
            abs(DATEDIFF(ss, A.LogTime, B.LogTime)) <= 1
选择*
从左连接
B在A.ItemId上=B.ItemId和
abs(DATEDIFF(ss,A.LogTime,B.LogTime))