MySQL时间戳介于2小时前和3天前
试图在MySQL时间戳介于2小时前和3天前,mysql,timestamp,between,Mysql,Timestamp,Between,试图在时间戳字段上执行MySQL查询 我接近得到正确的结果,但它总是只落后3天,今天什么都没有。我相信这与使用时间戳字段的介于之间有关 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`
时间戳
字段上执行MySQL查询
我接近得到正确的结果,但它总是只落后3天,今天什么都没有。我相信这与使用时间戳
字段的介于
之间有关
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))
这是因为您使用的是
DATE(NOW())
而不是NOW()
。这会丢弃一天中的时间,因此它会从一天的开始减去2小时(即前一天晚上10点),而不是现在之前的2小时
AND (`placed_ts` BETWEEN
DATE_SUB(DATE(NOW()), INTERVAL 3 DAY)
AND DATE_SUB(NOW(), INTERVAL 2 HOUR))
我认为这里的错误不止这些however@Strawberry你的意思是像使用
groupby
而不进行任何聚合一样?@Barmar不知道如何回答groupby
问题,但是如果我删除DATE()
部分,我确实会得到想要的结果。cart\u id
字段现在是唯一的,但几个月前并不是为了澄清问题,我只是使用了一个GROUP BY
,但是在查看所需的时间范围时不一定需要它,谢谢。如果cart\u id
是唯一的,那么没有必要按cart\u id分组。我认为这里有更多的错误however@Strawberry你的意思是像使用groupby
而不进行任何聚合吗?@Barmar不知道如何回答groupby
问题,但是,如果删除DATE()
部分,我确实会得到所需的结果。cart\u id
字段现在是唯一的,但几个月前并不是为了澄清问题,我只是使用了一个GROUP BY
,但是在查看所需的时间范围时不一定需要它,谢谢。如果cart\u id
是唯一的,那么就不需要GROUP BY cart\u id
。为什么要使用GROUP BY
而不使用任何聚合函数,如COUNT()
或SUM()
?结果将来自具有相同cart\u id
的所有行中不可预测的行。为什么使用groupby
而没有任何聚合函数,如COUNT()
或SUM()
?结果将来自具有相同cart\u id
的所有行中不可预测的行。