MySQL - 如何SUM时间?

Joh*_*n M 8 mysql

我有一个表格,其中包含以这种格式的日期时间值:

开始

1/13/2009 7:00:00 AM

结束

1/13/2008 2:57:00 PM

我使用'str to date'函数将它们转换为日期时间格式.

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

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

小智 43

我认为你必须使用这个代码......它的工作原理:)

SELECT  
  SEC_TO_TIME( SUM( TIME_TO_SEC( `time` ) ) ) AS total_time  
FROM time_table;
Run Code Online (Sandbox Code Playgroud)


Jas*_*son 6

查看MySQL DateDiff函数

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

你也可以尝试:

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

我没有测试第二个,但我知道第一个应该工作.


Eri*_*lje 5

尝试查看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
)
Run Code Online (Sandbox Code Playgroud)