SQL Query正确计算时间

时间:2014-05-23 14:17:41

标签: php mysql

我有以下SQL查询,它可以计算各种字段以及总时间。此查询的结果是十进制数,而不是总小时数和分钟数HH:MM

SQL中的表格中包含HH:MM:SS格式的时间。

有什么方法可以调整下面的SQL查询,所以时间计算的输出将是HH:MM?

提前谢谢你,

Thanasis

                public static function PilotAircraftFlownCounts($pilotid)
{
    $key = 'ac_flown_counts_'.$pilotid;

    $counts = CodonCache::read($key);

    if($counts === false)
    {
        //Select aircraft types
        $sql =  'SELECT a.name AS aircraft, COUNT(p.aircraft) AS count, SUM(p.flighttime) AS hours
                FROM '.TABLE_PREFIX.'pireps p, '.TABLE_PREFIX.'aircraft a 
                WHERE p.aircraft = a.id AND p.pilotid='.intval($pilotid).'
                GROUP BY a.name';

        $counts = DB::get_results($sql);
        CodonCache::write($key, $counts, 'medium');
    }

    return $counts;
}

2 个答案:

答案 0 :(得分:0)

在MySQL中(我不确定这是否在其他数据库中),您可以使用SEC_TO_TIME函数以HH:MM:SS格式重新格式化秒数。也许:

$sql =  'SELECT a.name AS aircraft, COUNT(p.aircraft) AS count, SEC_TO_TIME(SUM(p.flighttime)) AS hours FROM ' .
        TABLE_PREFIX . 'pireps p, TABLE_PREFIX' .
        'aircraft a WHERE p.aircraft = a.id AND p.pilotid=' . 
        intval($pilotid) . 'GROUP BY a.name';

答案 1 :(得分:0)

我认为这是“差不多”。 如果飞行时间以小时计算(作为小数或其他数字类型),您真的想要这样:

CONCAT(FLOOR(SUM(p.flighttime)),“:”,ROUND((SUM(p.flighttime)-FLOOR(SUM(p.flighttime)))* 60))AS小时