如何获得两个不同行中两个时间戳的区别?

时间:2017-12-02 08:39:01

标签: php

这是我从数据库中提取的数据。

| Starttime | Stoptime |
| 06:35:00  | 13:05:00 |
| 13:17:00  | 16:38:00 |
| 16:48:00  | 03:07:00 |

我必须得到第二行的开始时间和第一行的停止时间

的区别

即。 13:17:00-13:05:00 + 16:48:00-16:38:00

我写了以下代码,但我无法得到结果

$sql->execute();
$row[]=$sql->fetch();
for($i=0,$j=1,$k=0;$i=count($row[0]);$i++,$j++,$k++){
    $sum += TIMESTAMPDIFF('MINUTE',$row[$j][$i-$k] , $row[$i][$j-$k]);
}

3 个答案:

答案 0 :(得分:1)

在mysql中获取数据之前,请使用函数“timediff”作为starttime和endtime

select 
    *, timediff(stoptime, starttime) as time_diff 
from 
    table_name;

注意:两列的数据类型设置为使用此功能的时间。这是获得解决方案的最简单方法

参考:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timediff

答案 1 :(得分:0)

您可以使用php函数strtotime来获取unix时间戳(自1970年1月1日00:00:00 UTC以来的秒数)。由于时间戳只是一个整数,因此很容易用它来减去,添加或做任何你想做的事情。

$sum += strtotime($row[$i][$j-$k]) - strtotime($row[$j][$i-$k]);

另外,我怀疑你的索引和退出条件有问题。如果您想将行$i+1第一列与行$i第二列进行比较,那么您需要比较$row[$i + 1][0]$row[$i][1],注意退出长度为1的循环,因此$i+1永远不会超出范围。

答案 2 :(得分:-3)

yyyy-MM-dd HH:mm:ss

格式获取时间戳

现在删除所有'-',' ',':',您将获得整数。 从你要比较的另一个时间戳中减去它。

您得到的答案,将其转换为yyyy-MM-dd HH:mm:ss

格式

你会得到改变。