Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL计算两个日期/时间之间的总持续时间_Mysql - Fatal编程技术网

如何使用MySQL计算两个日期/时间之间的总持续时间

如何使用MySQL计算两个日期/时间之间的总持续时间,mysql,Mysql,我有一个名为it_的表,如下所示: office | start | end | total ------------------------------------------------------------ nyc | 2014-07-01 20:56:00 | 2014-07-01 22:19:00 | 01:23 | ewi | 2014-07-17 17:35:00 | 2014-07-17 18:05:00

我有一个名为it_的表,如下所示:

office |        start        |         end         | total
------------------------------------------------------------
nyc    | 2014-07-01 20:56:00 | 2014-07-01 22:19:00 | 01:23 |
ewi    | 2014-07-17 17:35:00 | 2014-07-17 18:05:00 | 00:30 |
nyc    | 2014-07-11 03:09:00 | 2014-07-11 03:26:00 | 00:17 |
------------------------------------------------------------
所以,基本上,它只是显示office何时停机以及停机时间。如何计算(添加)纽约市办公室的总时间?所以,我希望输出是01:40(合并01:23+00:17)

我的查询如下所示(我使用的是Joomla 3.3):


您必须将查询结果放入下面的代码中

$i=0;
foreach( $results as $row)
{
 if($i == 0 ){
  $dt = DateTime::createFromFormat('H:i', $row['total']);
 } 

 $arr = explode(':',$row['total']);

 $dt->add(new DateInterval('PT'.$arr[0].'H'));
 $dt->add(new DateInterval('PT'.$arr[1].'M'));
 $i++;  
}
/* Total time */
echo $dt->format('H:i');

使用Joomla db对象尝试以下mySQL:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select("office,`start`,`end`,SEC_TO_TIME( SUM((UNIX_TIMESTAMP(`end`) - UNIX_TIMESTAMP(`start`))) ) AS total_outage");
$query->from($db->quoteName('#__outage'));
$query->group('office');
$db->setQuery($query);
foreach($result= $db->loadObjectList() as $outage) {
    echo $outage->office . "  :  " . $outage->total_outage . '<Br/>';
}

您想用SQL还是PHP来实现这一点?
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select("office,`start`,`end`,SEC_TO_TIME( SUM((UNIX_TIMESTAMP(`end`) - UNIX_TIMESTAMP(`start`))) ) AS total_outage");
$query->from($db->quoteName('#__outage'));
$query->group('office');
$db->setQuery($query);
foreach($result= $db->loadObjectList() as $outage) {
    echo $outage->office . "  :  " . $outage->total_outage . '<Br/>';
}
ewi : 00:30:00
nyc : 01:40:00