计算给定的开始和结束日期的平均时间

时间:2010-08-10 17:26:50

标签: php mysql date

我有一个名为date_start的字段和一个名为date_end的字段的表格。字段的值是这样的

year-month-day hours:minutes:seconds

我需要找出:

  • 此人完成任务需要多长时间。
  • 所有人的平均时间。

我还是有点新鲜,老实说也不知道从哪里开始。

感谢您的帮助。

5 个答案:

答案 0 :(得分:1)

假设MySQL中的字段是TIMESTAMP或DATETIME,我会使用两个MySQL查询。一个用于任务特定结果。

SELECT UNIX_TIMESTAMP(date_end) - UNIX_TIMESTAMP(date_start)  AS seconds_to_complete_task
FROM a

一个是平均结果。

SELECT AVG(UNIX_TIMESTAMP(date_end)-UNIX_TIMESTAMP(date_start)) AS avg_seconds_to_complete_task
FROM a

答案 1 :(得分:0)

从这里开始:strtotime()此函数将您的时间转换为表示自1970年以来的秒数的数字。然后您可以从另一个中减去一个以查找经过的秒数。

http://us3.php.net/strtotime

答案 2 :(得分:0)

我没有测试过,但这样可行:

SELECT (UNIX_TIMESTAMP(date_end) - UNIX_TIMESTAMP(date_start)) AS personal_complete_time, 
AVG(UNIX_TIMESTAMP(date_end) - UNIX_TIMESTAMP(date_start)) AS total_average 
FROM mytable

您将获得完成的平均秒数

答案 3 :(得分:0)

你说你有一个表格,其中包含以这种格式存储的日期:年 - 月 - 日时:分:秒。

您确定没有使用日期时间字段吗?如果是这样,那解决了一半的问题。日期时间字段以这种方式表示。

答案 4 :(得分:0)

这将有效:

$total_time_worked = 0;
foreach( $db_records as $time_entry )
{
    $start = strtotime($time_entry['date_start']);
    $end = strtotime($time_entry['date_end']);

    // Time worked (in seconds)
    $worked = $end-$start;

    // Increment the total
    $total_time_worked += $worked;
}

// Get the average time worked (in seconds)
$average = $total_time_worked/count($db_records);