如何计算每行之间的时间差(+/-)?

时间:2015-02-21 05:26:28

标签: php mysql sql datetime dateinterval

我正在使用PHP回显我的MYSQL数据库并尝试计算“时间”列的每一行中“时间”的差异。我在MYSQL数据库中以TIME格式HH:MM:SS(00:00:00)存储“时间”。我想要实现的输出示例:

Saved On | Time (MM:SS) | + / - Time (MM:SS)
----------------------------------
TIMEDATE | 00:11       | + 00:05 |
----------------------------------
TIMEDATE | 00:06       |  00:00  |
----------------------------------
TIMEDATE | 00:06       | - 1:00  |
----------------------------------
TIMEDATE | 00:07       |  00:00  |
----------------------------------

我当前的mysql查询+ php:

$result = mysql_query("SELECT * FROM timer WHERE user_id = '$userid' ORDER BY savedon DESC") 
or die(mysql_error());  

echo "<table class='sortable'>";
echo "<tr> <th>Saved On</th> <th>Time (MM:SS)</th> <th>+/-</th> </tr>";
    while($row = mysql_fetch_array( $result )) {
echo "<tr><td>";
echo $row['savedon'];
echo "</td><td>"; 
echo $row['time'];
echo "</td><td>"; 
echo $row['time']; // My issue is right here. I have no clue on how to calculate the +/- difference of times
echo "</td></tr>";  

}

echo "</table>";

我的问题:

  1. 我正在尝试格式化删除小时前缀的时间。示例:00:06(MM:SS)而不是00:00:06(HH:MM:SS)。

  2. 每行应计算上述时间的差异。

  3. 我不确定是否应该在查询中使用MYSQL或使用PHP来处理。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为在PHP中做这个更好

制作循环并在里面你可以使用这样的东西:

$one = new DateTime($firstDate);
$two = new DateTime($secondDate);
$interval = $two->diff($one);

echo $interval->format('%I:%S');
  

http://php.net/manual/en/dateinterval.format.php

答案 1 :(得分:0)

如果[id]和[id之前的id]需要时间差,可以使用subselect。

SELECT TIMEDIFF(t1.time_row, (
    SELECT time_row FROM tablename t2 WHERE t2.id < t1.id ORDER BY id DESC LIMIT 1)
  )
FROM tablename t1