MySQL 2 小时前和 3 天前的时间戳
MySQL TIMESTAMP BETWEEN 2 hours ago and 3 days ago
正在尝试对 TIMESTAMP
字段执行 MySQL 查询。
我接近获得正确的结果,但它总是只落后 3 天,当天没有任何结果。我相信这与将 BETWEEN
与 TIMESTAMP
字段一起使用有关。
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))
正在尝试对 TIMESTAMP
字段执行 MySQL 查询。
我接近获得正确的结果,但它总是只落后 3 天,当天没有任何结果。我相信这与将 BETWEEN
与 TIMESTAMP
字段一起使用有关。
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))