Как рассчитать разницу во времени (+/-) между каждой строкой?

Я повторяю свою базу данных MYSQL с помощью PHP и пытаюсь вычислить разницу «времени» в каждой строке для столбца «время». У меня «время» хранится в формате ВРЕМЯ ЧЧ: ММ: СС (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>";

Мои проблемы:

  1. Я пытаюсь отформатировать время, чтобы сбросить часовой префикс. Пример: 00:06 (ММ: СС) вместо 00:00:06 (ЧЧ: ММ: СС).

  2. Каждая строка должна вычислять разницу во времени, как показано выше.

Я не уверен, должно ли это быть обработано с помощью MYSQL в запросе или с помощью PHP. Любая помощь будет оценена.

3

Решение

Я думаю, что лучше сделать это в 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

Другие решения

Можно использовать подвыбор, если требуется разница во времени между [id] и [id перед id].

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
0

По вопросам рекламы [email protected]