Истекший расчет php mysql

У меня есть приложение [iphone], которое отправляется на сервер несколько раз [с помощью json], поэтому время выглядит как hh: mm 24-часовой формат, время сохраняется в db как varchar,

Мне нужно вычислить прошедшее время = endTime - startTime

но моя проблема в том, что у меня есть время в db как varchar!, нет метки времени,

  • так, как вычислить прошедшее время, не изменив тип поля varchar в моем db?, могу ли я преобразовать этот hh: mm в int? для операции?, а затем показывая его снова как hh: mm, возможно, чтобы сохранить в другой таблице?

Большое спасибо!

3 ответа

Просто:

$start_time = '11:10';
$end_time = '18:55';
$start_time = explode(':', $start_time);
$end_time = explode(':', $end_time);
$elapsed_time = $end_time[0]*60+$end_time[1]-$start_time[0]*60-$start_time[1];
// in minutes.
$elapsed_hours = floor($elapsed_time/60);
$elapsed_minutes = $elapsed_time-$elapsed_hours*60;
print $elapsed_hours.':'.$elapsed_minutes;
// 7:45


так как вычислять прошедшее время, не меняя тип поля varchar в моей db?

Вы можете бросить его, но вам лучше было бы использовать это как дату и время.

cast(endtime as datetime) - cast(starttime as datetime) -- yields an interval


В PHP:

$json_time = '13:10';
$json_format = 'H:i';
$date = DateTime::createFromFormat($json_format, $json_time);
$mysql_format = 'Y-m-d H:i:s';
echo "Format: $mysql_format; " . $date->format($mysql_format) . "\n";
echo $date->getTimestamp();

Yeilds:

Формат: Y-m-d H: i: s; 2011-06-08 13:10:00

1307495400

licensed under cc by-sa 3.0 with attribution.