正如您在图像中看到的,我有一个停机报告,显示所选日期所选工厂的停机时间。现在,我想在"Time Duration"
列中添加所有值,并将其显示在"TOTAL TIME DURATION"
附近的单独显示中。例如,在图像中,所选日期为2015年3月17日和2015年3月30日,所选工厂为Raw Mill。该报告显示了所选13天Raw Mill的停机时间。我想在"Time duration"
列中添加这13天的所有时间,并将其显示在"TOTAL TIME DURATION"
附近的单独显示中。时间格式为HH:MM:SS。我怎样才能做到这一点?
答案 0 :(得分:3)
使用以下查询:
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration))) FROM TableName AS 'TOTAL TIME DURATION';
但是,有时总持续时间可能超过允许的最大时间值,即" 838:59:59"。因此,您通常可以使用以下查询来计算溢出的和:
SELECT CONCAT_WS(' hours and ',
((SUM(TIME_TO_SEC(Time_Duration)) DIV (TIME_TO_SEC('838:59:59')+1))*839),
(SEC_TO_TIME(SUM(TIME_TO_SEC(Time_Duration)) MOD (TIME_TO_SEC('838:59:59')+1)))
)
FROM TableName AS 'TOTAL TIME DURATION'
这将以以下形式提供输出:
3 hours and 3:45:05
您还可以获得所需格式的结果,例如: 6:45:05
,包含以下自定义查询:
SELECT CONCAT_WS(
':',
(SUM(TIME_TO_SEC(Time_Duration)) DIV 3600,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) DIV 60,
(SUM(TIME_TO_SEC(Time_Duration)) MOD 3600) MOD 60)
FROM TableName AS 'TOTAL TIME DURATION';
答案 1 :(得分:0)
步骤:
time duration
值time duration
值time
,这只是total time duration
示例:
mysql> SELECT CAST(SUM(time_duration) AS TIME) AS total_time_duration FROM (
-> SELECT CAST('01:08:00' AS TIME) time_duration
-> UNION
-> SELECT CAST('00:39:00' AS TIME)
-> ) date_range_results;
+---------------------+
| total_time_duration |
+---------------------+
| 01:47:00 |
+---------------------+
1 row in set (0.00 sec)
mysql>