我有一张桌子可以从任务中返回分钟数,我想将其转换为小时和分钟。
我的选择是:
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?
谢谢!
答案 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');