2017-02-25 97 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。非常感謝你!當我允許時,我會接受答案。也謝謝你讓我知道子查詢是不必要的,我可以發誓它不能正常工作,當我第一次嘗試它幾個月和幾個月前,但現在返回相同的結果,所以顯然它是:)再次感謝 –

相關問題