【问题标题】:How to join on timestamp columns with tolerance如何加入具有容差的时间戳列
【发布时间】:2015-04-15 18:45:54
【问题描述】:

我怎样才能允许 1 - 10 秒的容差?

我有 2 个带有时间戳的表,但延迟了 1-10 秒。我正在使用内部连接来比较它们。我在两个表中都有电话号码(列)匹配但不能使它们与时间戳匹配(仅限时间)。为了允许一定的容差,我可以使用像cast(DateCreated as Time) = cast(TIMESTAMP as time) + 5 这样的表达式。但我不想每一秒都这样做。

SELECT Time_To_Sec(cast("table1_DateCreated" as time)) as DateCreated 
     , Time_To_Sec(cast("table2"."Timestamp" as time)) as Timestampe
     , "Direction","FromTW", "ToTW", "table2"."ANI","table2"."CALL ID"
     , "table2"."Disposition"
FROM "calls and time"
INNER JOIN "table2" on cast(DateCreated as Time)=cast(TIMESTAMP as time)+5
                   and FromTW="table2"."ANI"

如果可能,我希望看到以下结果:

table1(DateCreated)  |  table2(Timestamp)  | compared results
---------------------+---------------------+-----------------
5000                 |  5005               |  table3
5001                 |  5009               |  table3
5001                 |  5050               |  not in table3   

如果满足条件则发送到表3,如果不满足条件则不发送到表3。

使用 Zoho 报告,因此我不确定他们使用的是什么类型的数据库。 Postgres、MySQL 等

【问题讨论】:

  • Postgres 还是 MySQL?不能同时是两者。
  • 我不知道 ZOHO 报告更喜欢什么,但 mysql 大部分时间都在工作。让我们试试Mysql

标签: mysql sql postgresql zoho fuzzy-comparison


【解决方案1】:

如果两个表中的时间戳可以是off by 1-10 seconds,那么从逻辑上讲,匹配的最大容差是20 sceonds(每边+/- 10 )。

Postgres 中测试:

SELECT *
FROM   "calls and time" t1
JOIN   table2 t2 ON t2."TIMESTAMP" BETWEEN t1."DateCreated" - interval '20 sec'
                                       AND t1."DateCreated" + interval '20 sec';
WHERE  t1."FromTW" = t2."ANI"  -- FromTW or "FromTW" ?

这是一个sargable 表达式,允许在x 上使用索引:

x BETWEEN y - interval '20 sec'
      AND y + interval '20 sec'

"calls and time""TIMESTAMP""FromTW"非常不幸的标识符,顺便说一句。坚持使用合法的、不带引号的名称以节省一些麻烦。

【讨论】:

    【解决方案2】:

    检查两个时间戳的绝对差异,这将是伪代码:

    if (abs($timestamp1 - $timestamp2) <= $tolerance) { ... }
    

    【讨论】:

    • 我明白其中的逻辑。我会试试看。
    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 2022-01-16
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多