php mysql 时间计算

Posted

技术标签:

【中文标题】php mysql 时间计算【英文标题】:php mysql time elapsed calculation 【发布时间】:2011-09-10 12:13:55 【问题描述】:

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

我需要计算经过的时间 = endTime - startTime

但我的问题是我在 db 中有时间作为 varchar!,没有时间戳

那么如何计算经过的时间,而不改变我数据库中字段的 varchar 类型? 我可以将此 hh:mm 转换为 int 吗?操作?,然后再次显示为 hh:mm,可能要保存在其他表中?

非常感谢!

【问题讨论】:

【参考方案1】:

那么如何计算经过的时间,而不改变我数据库中字段的 varchar 类型?

您可以投射它,但最好将它作为日期时间开始。

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

【讨论】:

【参考方案2】:

简单:

$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

【讨论】:

【参考方案3】:

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

产量:

格式:Y-m-d H:i:s; 2011-06-08 13:10:00

1307495400

【讨论】:

以上是关于php mysql 时间计算的主要内容,如果未能解决你的问题,请参考以下文章

php,mysql时间差问题

PHP计算在许多列中包含相同值的MYSQL行

PHP计算一列中包含相同值的MYSQL行

在 PHP/MYSQL 中计算过滤器记录 [重复]

MySQL - PHP:计算一天中多个事件之间的总小时数

使用 PHP 和 MySQL 计算地理位置距离