php mysql прошедшее время расчета - PullRequest
3 голосов
/ 08 июня 2011

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 08 июня 2011

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

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

 cast(endtime as datetime) - cast(starttime as datetime) -- yields an interval
2 голосов
/ 08 июня 2011

Легко:

$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
2 голосов
/ 08 июня 2011

В 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();

Получений:

Формат: Гмд Ч: i: с;2011-06-08 13: 10: 00

1307495400

...