2017-05-25 85 views
0

我要總結的列late_am_inlate_am_outlate_pm_inlate_pm_out並將結果total_hours 列時間。mysql如何總結列

SEC_TO_TIME(SUM(TIME_TO_SEC(STR_TO_DATE(late_pm_in, '%H:%I') - TIME_TO_SEC(STR_TO_DATE 
(late_pm_out, '%H:%I')))) AS total_hours 

我列的數據類型是VARCHAR。

謝謝!

sum time in mysql

我想要實現這樣的: want to achieve

+0

可以共享所需的輸出時如何計算總小時這裏? – VeeK

+0

減法不應該是另一種方式嗎?從中減去得到他們的時間量。 – Barmar

+0

嗨,我只想通過添加列來獲得總小時數:late_am_in,late_am_out,late_pm_in,late_pm_out。有可能在MySQL? –

回答

0

試試這個它的工作原理。

SEC_TO_TIME((TIME_TO_SEC(STR_TO_DATE(late_am_out, '%H:%i')) - TIME_TO_SEC(STR_TO_DATE(late_am_in, '%H:%i'))) + (TIME_TO_SEC(STR_TO_DATE(late_pm_out, '%H:%i')) - TIME_TO_SEC(STR_TO_DATE(late_pm_in, '%H:%i')))) AS total_hours 

繼承人如何更新表計算總小時

Update Test SET total_hours = SEC_TO_TIME((TIME_TO_SEC(STR_TO_DATE(late_am_out, '%H:%i')) - TIME_TO_SEC(STR_TO_DATE(late_am_in, '%H:%i'))) + (TIME_TO_SEC(STR_TO_DATE(late_pm_out, '%H:%i')) - TIME_TO_SEC(STR_TO_DATE(late_pm_in, '%H:%i')))) 

繼承人插入值

INSERT INTO Test 
    (`id`, `late_am_in`, `late_am_out`, `late_pm_in`, `late_pm_out`, `total_hours`) 
VALUES 
    (7, '14:15', '16:15', '18:15', '19:19', SEC_TO_TIME((TIME_TO_SEC(STR_TO_DATE(late_am_out, '%H:%i')) - TIME_TO_SEC(STR_TO_DATE(late_am_in, '%H:%i'))) + (TIME_TO_SEC(STR_TO_DATE(late_pm_out, '%H:%i')) - TIME_TO_SEC(STR_TO_DATE(late_pm_in, '%H:%i'))))) 
; 
+0

嗨它不工作。請注意我的列是varchar。謝謝 –

+0

當然,它的工作原理是,你有一個空白的late_am_in和late_am_out。這些行的time_to_sec爲空,因此該行的總體輸出爲空,並且不能爲null。 – noyanc

+0

我們現在試試。沒有更多的空值。 str_to_date將處理它。 – noyanc