如何计算每行之间的时间差(+/-)?
How calculate the difference of time (+/-) between each row?
我正在使用 PHP 回显我的 MYSQL 数据库,并尝试计算列 "time" 的每一行中 "time" 的差异。我将 "time" 以 TIME 格式 HH:MM:SS (00:00:00) 存储在 MYSQL 数据库中。我试图实现的输出示例:
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>";
我的问题:
我正在尝试格式化时间以删除小时前缀。示例:00:06 (MM:SS) 而不是 00:00:06 (HH:MM:SS).
每一行都应该计算时间差,如上所示。
我不确定是否应该在查询中使用 MYSQL 或 PHP 来处理。任何帮助,将不胜感激。
我认为最好在 PHP
中完成
做一个循环,在里面你可以使用这样的东西:
$one = new DateTime($firstDate);
$two = new DateTime($secondDate);
$interval = $two->diff($one);
echo $interval->format('%I:%S');
如果需要 [id] 和 [id before 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
我正在使用 PHP 回显我的 MYSQL 数据库,并尝试计算列 "time" 的每一行中 "time" 的差异。我将 "time" 以 TIME 格式 HH:MM:SS (00:00:00) 存储在 MYSQL 数据库中。我试图实现的输出示例:
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>";
我的问题:
我正在尝试格式化时间以删除小时前缀。示例:00:06 (MM:SS) 而不是 00:00:06 (HH:MM:SS).
每一行都应该计算时间差,如上所示。
我不确定是否应该在查询中使用 MYSQL 或 PHP 来处理。任何帮助,将不胜感激。
我认为最好在 PHP
中完成做一个循环,在里面你可以使用这样的东西:
$one = new DateTime($firstDate);
$two = new DateTime($secondDate);
$interval = $two->diff($one);
echo $interval->format('%I:%S');
如果需要 [id] 和 [id before 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