2017-05-25 87 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