Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询以正确计算时间_Php_Mysql - Fatal编程技术网

Php SQL查询以正确计算时间

Php SQL查询以正确计算时间,php,mysql,Php,Mysql,我有下面的SQL查询,它计算各种字段以及总时间。此查询的时间结果是十进制数,而不是总小时和分钟数HH:MM SQL中的表的时间格式为HH:MM:SS 有没有办法调整下面的SQL查询,使时间计算的输出以HH:MM为单位 提前谢谢大家, 塔纳斯 public static function PilotAircraftFlownCounts($pilotid) { $key = 'ac_flown_counts_'.$pilotid; $counts

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

SQL中的表的时间格式为HH:MM:SS

有没有办法调整下面的SQL查询,使时间计算的输出以HH:MM为单位

提前谢谢大家,

塔纳斯

                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;
}
在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';
我认为这是一个“几乎”。如果飞行时间是以小时为单位测量的(以十进制或其他数字类型),那么您真的需要:


CONTAT(SUM(Po.FelTimeTimes),”,(So(p FLIFTIME-TIME)-Lead(P(FLUTIMED))(60))作为小时

显示表定义。考虑提供适当的DDL(和/或SqLoFIDLE)连同期望的结果集。如果飞行时间存储在基于时间的列中,则可以工作。飞行时间确实是基于时间的列。复制了你的代码,我得到的结果是:飞机A:16,飞机B:0。如果我从DB列手动添加,则HH:MM格式的正确时间是:飞机A:07:12,飞机B:00:25…@格鲁曼,您的总和是小时,而不是秒。将总和乘以3600以转换为秒。秒到秒时间(SUM(p.flighttime)*3600))我们正在做这件事,但我们还没有做到之前的结果是飞机A:5.92飞机B:2.5。有了这个,我得到了飞机A:59.200和飞机B:2.500。。。