使用 DateDiff 查找 table_1.column A 和 table_2.column B 相差 <90 分钟的示例

Using DateDiff to find examples where table_1.column A and table_2.column B have <90 mins difference

我正在尝试找到一种方法来过滤两个 date/time 字段的差异小于 90 分钟的记录。

示例:

orders.created_at = 2015-08-09 20:30:20
table2.created_at = 2015-08-09 20:09:30

我尝试过使用 TimeDiff,但我不明白该语法如何适用于此示例。

数据来自链接到同一订单信息的不同表格。目的是找到在 90 分钟内下订单但第三个字段尚未更新的示例。我将使用 AND 查询仅包含第三个字段为 NULL

的结果

在mysql中,您需要为此使用TIMEDIFF() 或UNIX_TIMESTAMP。我更喜欢 UNIX_TIMESTAMP 解决方案,因为它更简单:

WHERE
thirdfield IS NULL
AND UNIX_TIMESTAMP(orders.created_at) - UNIX_TIMESTAMP(table2.created_at) < 5400
WHERE
thirdfield IS NULL
AND UNIX_TIMESTAMP(orders.created_at) - UNIX_TIMESTAMP(table2.created_at) < 5400

这是双向的,还是必须扩展为“(A-B < 5400 AND A-B >0) OR (B-A <5400 AND B-A > 0)”?

((UNIX_TIMESTAMP(orders.created_at) - UNIX_TIMESTAMP(table2.created_at) < 5400) 
AND (UNIX_TIMESTAMP(orders.created_at) - UNIX_TIMESTAMP(table2.created_at) > 0)) 
OR ((UNIX_TIMESTAMP(table2.created_at) - UNIX_TIMESTAMP(orders.created_at) < 5400) 
AND (UNIX_TIMESTAMP(table2.created_at) - UNIX_TIMESTAMP(orders.created_at) > 0))