Php SQL查询以正确计算时间
我有下面的SQL查询,它计算各种字段以及总时间。此查询的时间结果是十进制数,而不是总小时和分钟数HH:MM SQL中的表的时间格式为HH:MM:SS 有没有办法调整下面的SQL查询,使时间计算的输出以HH:MM为单位 提前谢谢大家, 塔纳斯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
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。。。