2017-02-25 95 views
0

我有一个表,其中包含2列date_picked_begindate_picked并将有多个行中包含每个日期。MySQL在两个日期之间的计数时间与多行数据

如何使用TIMESTAMPDIFF获取所有数据行中日期之间的差值。

我已经尝试了以下查询,但它仅返回第一行中的差异秒数。 (这是别名total_picking_waiting_time这是试图获得总时间)。

SELECT COUNT(pi.pi_id) AS num_picking_waiting_time, 
AVG(TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked)) AS average_picking_waiting_time, 
TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked) AS total_picking_waiting_time 
FROM (SELECT pi_id, type, date_picked_begin, date_picked, picker FROM pickwave_items) as pi 
WHERE pi.type = 'Picking (Waiting Time)' AND DATE(pi.date_picked) = '2017-02-25' AND pi.picker = 1 

而且,我一直在假设该查询是越来越所有行中的两个日期之间的平均时间。是这样吗?由于它没有像我预期的那样返回总时间,我现在认为它不是。

谢谢

回答

1

首先,在FROM子查询是不必要的。它增加了查询的冗长度,并且实际上减慢了它的速度(因为MySQL实现了这样的子查询)。

然后,为了得到总采摘时间,使用SUM()

SELECT COUNT(pi.pi_id) AS num_picking_waiting_time, 
     AVG(TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked)) AS average_picking_waiting_time, 
     SUM(TIMESTAMPDIFF(SECOND, pi.date_picked_begin, pi.date_picked)) AS total_picking_waiting_time 
FROM pickwave_items as pi 
WHERE pi.type = 'Picking (Waiting Time)' AND 
     DATE(pi.date_picked) = '2017-02-25' AND 
     pi.picker = 1; 
+0

当然啊SUM。非常感谢你!当我允许时,我会接受答案。也谢谢你让我知道子查询是不必要的,我可以发誓它不能正常工作,当我第一次尝试它几个月和几个月前,但现在返回相同的结果,所以显然它是:)再次感谢 –

相关问题