MySQL - 如何SUM时间?

时间:2009-08-25 16:37:57

标签: mysql

我有一个包含此格式的日期时间值的表:

START

1/13/2009 7:00:00 AM

END

1/13/2008 2:57:00 PM

我使用'str to date'功能将这些转换为日期时间格式。

如何计算它们之间的差异? 然后将其总结,以便以总小时数显示(即一周的总小时数为40:53)。

我正在尝试timediff功能,但结果并不总结。

5 个答案:

答案 0 :(得分:43)

我认为你必须使用这段代码......它有效:)

SELECT  
  SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) AS total_time  
FROM time_table;

答案 1 :(得分:6)

查看MySQL DateDiff Function

SELECT SUM(DATEDIFF(endtime, starttime)) 
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'

您也可以尝试:

SELECT SUM(TIMEDIFF(endtime, starttime)) 
FROM somerecordstable
WHERE starttime > '[some date]' AND endtime <= '[some date]'

我没有测试过第二个,但我知道第一个应该可以工作。

答案 2 :(得分:4)

尝试查看UNIX_TIMESTAMPSEC_TO_TIME

您可以总结时间戳之间的差异,然后使用该值(以毫秒为单位)来获取时间:

SELECT SEC_TO_TIME(time_milis / 1000)
FROM (
   SELECT SUM(UNIX_TIMESTAMP(date1) - UNIX_TIMESTAMP(date2)) as time_milis
   FROM table
)

答案 3 :(得分:1)

SELECT some_grouping_column, SUM(TIMEDIFF(datecol1,datecol2)) as tot_time
FROM my_table
GROUP BY some_grouping_column;

答案 4 :(得分:1)

使用TIMEDIFF()

SUM(TIMEDIFF(end, start))