MySQL计算多行数据的2个日期之间的时间

MySQL Count time between 2 dates with multiple rows of data

我有一个 table,其中包含 2 列 date_picked_begindate_picked,并且会有多行,每行包含一个日期。

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

我尝试了以下查询,但它与第一​​行的秒数仅相差returns。 (这是试图获取总时间的别名 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

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

谢谢

首先,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;