php mysql运行时间计算

php mysql运行时间计算,php,mysql,database,elapsedtime,Php,Mysql,Database,Elapsedtime,我有一个应用程序[iphone],它有时[使用json]发送到服务器,所以时间看起来像hh:mm 24小时格式, 时间以varchar的形式保存在数据库中 我需要计算经过的时间=结束时间-开始时间 但我的问题是我在数据库中的时间是varchar!,没有时间戳 那么,如何在不更改my db中字段的varchar类型的情况下计算经过的时间呢?, 我能把这个hh:mm转换成int吗?对于操作?,然后将其再次显示为hh:mm,是否可能保存在其他表中 非常感谢 在PHP中: $json_time =

我有一个应用程序[iphone],它有时[使用json]发送到服务器,所以时间看起来像hh:mm 24小时格式, 时间以varchar的形式保存在数据库中

我需要计算经过的时间=结束时间-开始时间

但我的问题是我在数据库中的时间是varchar!,没有时间戳

  • 那么,如何在不更改my db中字段的varchar类型的情况下计算经过的时间呢?, 我能把这个hh:mm转换成int吗?对于操作?,然后将其再次显示为hh:mm,是否可能保存在其他表中
非常感谢

在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

那么,如何在不改变数据库中的varchar字段类型的情况下计算经过的时间呢

你可以扔掉它,但你最好先把它作为约会时间

 cast(endtime as datetime) - cast(starttime as datetime) -- yields an interval
简单:

$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