mysql分钟到小时和分钟

mysql分钟到小时和分钟,mysql,time,decimal,Mysql,Time,Decimal,我有一个表,它返回任务的分钟数,我想将其转换为小时和分钟 我的选择是: select m.mat_nome as 'Matéria', round( sum( case when Hour(TIMEDIFF(est_horario_inicial, est_horario_final))*60 = 0 then Minute(TIMEDIFF(est_horario_inicial, est_horario_final))

我有一个表,它返回任务的分钟数,我想将其转换为小时和分钟

我的选择是:

select
m.mat_nome as 'Matéria',
round(
    sum(
        case when Hour(TIMEDIFF(est_horario_inicial, est_horario_final))*60 = 0 
            then Minute(TIMEDIFF(est_horario_inicial, est_horario_final))
            else Hour(TIMEDIFF(est_horario_inicial, est_horario_final))*60
        end
    )/60
 ,2)
as 'tempo' from estudos_realizados e
left join materias m on e.mat_id = m.mat_id; 
这是从我的表返回100分钟,除以60得到1.67。 我想在1小时40分钟内得到结果

这是可能的吗?如何将数字除以60,并将小数修改为60


谢谢大家!

使用以下事实:小时=楼层/60 分钟=(-hours*60

您应该查找FLOOR()函数和简单的数学

CONCAT(FLOOR(minutes/60),'h ',MOD(minutes,60),'m') 

这起作用了!谢谢

select
    m.mat_nome as 'Matéria',
    CONCAT(
        FLOOR(
            sum(
                case when Hour(TIMEDIFF(est_horario_inicial, est_horario_final))*60 = 0 
                    then Minute(TIMEDIFF(est_horario_inicial, est_horario_final))
                    else Hour(TIMEDIFF(est_horario_inicial, est_horario_final))*60
                end
            )/60
        ),'h', 
        MOD(
            sum(
                case when Hour(TIMEDIFF(est_horario_inicial, est_horario_final))*60 = 0 
                    then Minute(TIMEDIFF(est_horario_inicial, est_horario_final))
                    else Hour(TIMEDIFF(est_horario_inicial, est_horario_final))*60
                end
            )
        ,60)
    , 'm')
    as 'tempo' from estudos_realizados e
left join materias m on e.mat_id = m.mat_id; 
Damir Kasipovic代码的变体:
这将62分钟转换为“1:02”

为什么不简单地这样做呢

select convert(date_add('2000-01-01', interval 146 minute), time);
这将返回
02:26:00

如果要指定返回格式,请执行以下操作

select date_format(date_add('2000-01-01', interval 146 minute), '%h:%i');

谢谢你节省了我的时间。
select date_format(date_add('2000-01-01', interval 146 minute), '%h:%i');