1

我们从用户那里收集订单,并在订单交付/取消之前给他们 3 天的付款窗口。我们希望每 8 小时向他们发送一次通知,以提醒他们付款。我们使用每小时 cron 发送通知。

我们如何获得在第 8/16/24 等小时内创建的所有订单?我们尝试了以下查询(简化)

SELECT * FROM t_orders where o_created > '2021-05-01 11:11:11' AND MOD( CEIL(('2021-05-02 12:12:12' - CAST(o_created AS DATETIME))/3600), 8 ) = 0

o_createdvarchar 字段在哪里(不幸的是),2021-05-01 11:11:11是日期前 3 天(我们接受 3 天的付款)并且2021-05-02 12:12:12是当前日期时间。两个日期时间都来自 php,所以计算是有的,没有问题。

但这似乎不起作用。我们将在 3 天内收到所有订单。

4

1 回答 1

1

这是TIMESTAMPDIFF可以成为您朋友的地方:

 WHERE TIMESTAMPDIFF(HOUR, o_created, Now()) IN (8, 16, 24, … )
于 2021-05-20T10:38:04.223 回答