MySQL将分钟转换为小时和分钟

10

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

我的选择是:


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进制?

谢谢!

5个回答

23

你应该查找FLOOR()函数和简单数学。你需要类似这样的东西:

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

1
感谢您节省了我的时间。 - Zeeshan Eqbal

7
CONCAT(FLOOR(minutes/60),':',LPAD(MOD(minutes,60),2,'0'))

这是对Damir Kasipovic代码的改版: 将62分钟转换为'1:02'。

2
为什么不简单地做这样的事情?
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');

0

这个可以用了!谢谢!

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; 

-1
使用以下公式:小时 = floor / 60,分钟 = (-hours * 60)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接