如何获得日期差异的总和?

时间:2011-07-14 13:05:23

标签: php mysql

表格中的数据是这样的

ds_start_time -> 09:00:00 , ds_end_time-> 09:30:00
ds_start_time -> 09:00:00 , ds_end_time-> 10:30:00
ds_start_time -> 10:00:00 , ds_end_time-> 10:30:00
ds_start_time -> 09:30:00 , ds_end_time-> 10:30:00

我想要日期和总和之间的差异 因为我把它放在查询中

SELECT SUM(TIMEDIFF(ds_end_time,ds_start_time)) 
FROM www
WHERE abc='123'........ 

但最后我得到2058800.000000。从这个我怎样才能得到总分钟和秒。  或任何其他方法.Plz建议。

2 个答案:

答案 0 :(得分:1)

如果您知道如何在MySQL中轻松完成此操作:

SELECT SEC_TO_TIME(SUM
    (TIME_TO_SEC(ds_end_time) - TIME_TO_SEC(ds_start_time))
                 ) AS timediff     
 FROM www 
 WHERE abc = '123'

请注意,如果有很多行有abc = '123',那么您可能会获得双重计数,因为您想要尝试迁移:

SELECT SEC_TO_TIME(
    (MAX(TIME_TO_SEC(ds_end_time)) - MIN(TIME_TO_SEC(ds_start_time)))
                 ) AS timediff     
 FROM www 
 WHERE abc = '123'

答案 1 :(得分:0)

使用PHP而不是SQL会更容易。考虑将实际时间排除,然后循环遍历它们。

$total = 0;
foreach ($results as $val) {
    $total += strtotime($val['ds_end_time']) - strtotime($val['ds_start_time']);
}

然后使用$ total,你有足够的毫秒来做你想要的事情。