这是我从数据库中提取的数据。
| 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]);
}
答案 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
你会得到改变。