我有一个应用程序 [iphone],它有时会 [使用 json] 发送到服务器,所以时间看起来像 hh:mm 24 小时格式,时间作为 varchar 保存在数据库中,
我需要计算经过的时间 = endTime - startTime
但我的问题是我在数据库中有时间作为varchar!,没有时间戳,
- 那么如何计算经过的时间,而不改变我的数据库中字段的 varchar 类型?,我可以将这个 hh:mm 转换为 int 吗?操作?,然后再次显示为 hh:mm,可能保存在其他表中?
多谢!
我有一个应用程序 [iphone],它有时会 [使用 json] 发送到服务器,所以时间看起来像 hh:mm 24 小时格式,时间作为 varchar 保存在数据库中,
我需要计算经过的时间 = endTime - startTime
但我的问题是我在数据库中有时间作为varchar!,没有时间戳,
多谢!
那么如何计算经过的时间,而不改变我的数据库中的 varchar 类型的字段?
你可以投射它,但你最好把它作为一个日期时间开始。
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();
产量:
格式:Ymd H:i:s;2011-06-08 13:10:00
1307495400
简单的:
$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