1

我试图找到一种方法来过滤两个日期/时间字段的差异小于 90 分钟的记录。

例子:

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

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

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

4

2 回答 2

1

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

WHERE
thirdfield IS NULL
AND UNIX_TIMESTAMP(orders.created_at) - UNIX_TIMESTAMP(table2.created_at) < 5400
于 2015-10-06T15:38:52.523 回答
1
WHERE
thirdfield IS NULL
AND UNIX_TIMESTAMP(orders.created_at) - UNIX_TIMESTAMP(table2.created_at) < 5400

这是否适用于两种方式,或者您是否必须扩展为“(AB < 5400 AND AB > 0)或(BA <5400 AND BA > 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))
于 2015-10-06T18:19:13.270 回答