我有以下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;
}
答案 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小时