2

我的表 CalTime 有一个 Timespent 列,它是 Time 数据类型。它以 HH:MM:SS 格式存储值。请建议如何对这一列的值求和。

   Timespent
    _______
    00:07:00
    01:05:00
    00:49:00

我想像这样打印 02:01:00 的总数。

我想知道是否有使用 php 的替代方法。

PS:我尝试使用 php 执行此操作,使用 strtotime 将每个列值(在 while 循环中)转换为时间戳,然后将它们添加并使用 date('H:i:s') 将它们转换回所需格式为 HH:MM:SS . 这似乎不起作用。代码看起来像这样。

     <?php   while(...)
      {
      $ts += strtotime($timeCal['timespent']);
      } ?>
4

2 回答 2

3

在几秒钟内转换它,然后求和,然后回到时间:

SELECT  SEC_TO_TIME( SUM( TIME_TO_SEC( `timespent` ) ) ) AS timeSum  
FROM CalTime
于 2013-09-20T19:00:11.870 回答
1

这是一个简单的功能。您可以遍历数组中的值以继续添加到下面的代码中。

//Incase strtotime gives any errors
date_default_timezone_set('America/New_York');
//
$mytime1 = "00:07:00";
$mytime2 = "01:05:00";
$secs = strtotime($mytime2)-strtotime("00:00:00");
$result = date("H:i:s",strtotime($mytime1)+$secs);

循环中的伪代码示例。
在php数组中返回mysql结果

$mytime1 = $myTimeArray[0]; 
$result = 0;

for($i=0;i<sizeOf($myTimeArray;$i++)) {
   $secs = strtotime($mytime[$i])-strtotime("00:00:00");
   $result + = date("H:i:s",strtotime($mytime1)+$secs);
}
于 2013-09-20T19:16:50.503 回答