基于SQL中30秒的时差来连接表

时间:2015-01-07 15:17:47

标签: sql sybase dateadd

我有一张买入/卖出交易表,我将其分开,只有一张买入交易表和一张卖出交易表。我想重新加入这两个表格,并将买入与产品相同的卖出相匹配,买入和卖出之间的执行时间相差10到30秒。

我试图将两个表连接起来并使用DATEADD作为时间增量,但是我返回了一条错误消息。

理想情况下,我希望新表包含buy表和sell表中的所有列,但匹配所需的列是product和execution_time。

我收到错误消息: - "invalid data type comparison in predicate"

ON b.product = a.product AND b.execution_time >= DATEADD(second, 30, a.execution_time)

30秒的部分比现在的10秒更重要,它可以是0-30。

1 个答案:

答案 0 :(得分:3)

您可以使用Sybase Datediff获得所需的结果

<强> MYSQL: -

SELECT B.* 
from tblBuy B INNER JOIN tblSell S
ON B.product = S.product
Where  TIME_TO_SEC(TIMEDIFF(B.execution_time ,S.execution_time )) BETWEEN 10 AND 30;

<强> SYBASE: -

SELECT B.* 
from tblBuy B INNER JOIN tblSell S
ON B.product = S.product
Where  DATEDIFF(SECOND, B.execution_time, S.execution_time) BETWEEN 10 AND 30;