MySQL 2 小时前和 3 天前的时间戳

MySQL TIMESTAMP BETWEEN 2 hours ago and 3 days ago

正在尝试对 TIMESTAMP 字段执行 MySQL 查询。

我接近获得正确的结果,但它总是只落后 3 天,当天没有任何结果。我相信这与将 BETWEENTIMESTAMP 字段一起使用有关。

SELECT
    billing_first_name,
    cart_id,
    placed_ts,
    s_email           
FROM   `orders`
WHERE `paypal_response` IS NULL
   AND `authorize_response` IS NULL
   AND `s_email` IS NOT NULL
   AND (`placed_ts` BETWEEN
        DATE_SUB(DATE(NOW()), INTERVAL 3 DAY)
        AND DATE_SUB(DATE(NOW()), INTERVAL 2 HOUR))     
GROUP BY `cart_id`
ORDER BY placed_ts DESC

这是因为您使用的是 DATE(NOW()) 而不是 NOW()。这会丢弃一天中的时间,因此它会从一天的开始时间减去 2 小时(即前一天晚上 10 点返回),而不是现在之前的 2 小时。

AND (`placed_ts` BETWEEN
    DATE_SUB(DATE(NOW()), INTERVAL 3 DAY)
    AND DATE_SUB(NOW(), INTERVAL 2 HOUR))