mysql分钟到小时和分钟

时间:2014-02-25 20:24:41

标签: 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))
            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 个答案:

答案 0 :(得分:8)

你应该查找FLOOR()函数和简单的数学运算。你需要像

这样的东西
CONCAT(FLOOR(minutes/60),'h ',MOD(minutes,60),'m') 

答案 1 :(得分:1)

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

Damir Kasipovic的代码的变体: 这会将62分钟转换为“ 1:02”

答案 2 :(得分:0)

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

答案 3 :(得分: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; 

答案 4 :(得分:0)

为什么不简单地做这样的事情?

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');