I have a query in which I have one example that gives the correct result and the other not when converting from minutes to hours.
1st example in minutes:
SELECT A.Colaborador,
SUM(A.'Horas Consumidas') AS 'Total Horas'
FROM
(SELECT centrodb.utentes.codigoutente,
centrodb.utentes.nome,
centrodb.utentes.descricaovalencia,
centrodb.registoFisioterapia.'DataRegisto',
centrodb.registoFisioterapia.'Data',
Inicio,
Fim,
centrodb.colaboradores.Nome AS Colaborador,
TIME_TO_SEC(TimeDiff(TIME_FORMAT(Fim,'%H:%i'), TIME_FORMAT(Inicio,'%H:%i')))/60 AS 'Horas Consumidas'
FROM centrodb.registoFisioterapia LEFT OUTER JOIN centrodb.utentes
ON centrodb.utentes.Id = centrodb.registoFisioterapia.utente
LEFT OUTER JOIN colaboradores
ON centrodb.colaboradores.codigo = centrodb.registoFisioterapia.Nome
where centrodb.registoFisioterapia.'Data' between '2018-04-26' And '2018-05-8' AND centrodb.colaboradores.Nome = 'TÂNIA LOPES') AS A
GROUP BY A.Colaborador
Result: 1650 minuots
1st example converted to hours:
SELECT A.Colaborador,
TIME_FORMAT(SEC_TO_TIME(SUM(A.'Horas Consumidas')),'%i:%s') AS 'Total Horas'
FROM
(SELECT centrodb.utentes.codigoutente,
centrodb.utentes.nome,
centrodb.utentes.descricaovalencia,
centrodb.registoFisioterapia.'DataRegisto',
centrodb.registoFisioterapia.'Data',
Inicio,
Fim,
centrodb.colaboradores.Nome AS Colaborador,
TIME_TO_SEC(TimeDiff(TIME_FORMAT(Fim,'%H:%i'), TIME_FORMAT(Inicio,'%H:%i')))/60 AS 'Horas Consumidas'
FROM centrodb.registoFisioterapia LEFT OUTER JOIN centrodb.utentes
ON centrodb.utentes.Id = centrodb.registoFisioterapia.utente
LEFT OUTER JOIN colaboradores
ON centrodb.colaboradores.codigo = centrodb.registoFisioterapia.Nome
where centrodb.registoFisioterapia.'Data' between '2018-04-26' And '2018-05-8' AND centrodb.colaboradores.Nome = 'TÂNIA LOPES') AS A
GROUP BY A.Colaborador
Result: 27:30
Example 2 in minutes where you give the wrong times:
SELECT A.Colaborador,
SUM(A.'Horas Consumidas') AS 'Total Horas'
FROM
(SELECT centrodb.utentes.codigoutente,
centrodb.utentes.nome,
centrodb.utentes.descricaovalencia,
centrodb.registoFisioterapia.'DataRegisto',
centrodb.registoFisioterapia.'Data',
Inicio,
Fim,
centrodb.colaboradores.Nome AS Colaborador,
TIME_TO_SEC(TimeDiff(TIME_FORMAT(Fim,'%H:%i'), TIME_FORMAT(Inicio,'%H:%i')))/60 AS 'Horas Consumidas'
FROM centrodb.registoFisioterapia LEFT OUTER JOIN centrodb.utentes
ON centrodb.utentes.Id = centrodb.registoFisioterapia.utente
LEFT OUTER JOIN colaboradores
ON centrodb.colaboradores.codigo = centrodb.registoFisioterapia.Nome
where centrodb.registoFisioterapia.'Data' between '2018-03-26' And '2018-04-25' AND centrodb.colaboradores.Nome = 'TÂNIA LOPES') AS A
GROUP BY A.Colaborador
Result: 3840 minutes
2nd example converted to hours:
SELECT A.Colaborador,
TIME_FORMAT(SEC_TO_TIME(SUM(A.'Horas Consumidas')),'%i:%s') AS 'Total Horas'
FROM
(SELECT centrodb.utentes.codigoutente,
centrodb.utentes.nome,
centrodb.utentes.descricaovalencia,
centrodb.registoFisioterapia.'DataRegisto',
centrodb.registoFisioterapia.'Data',
Inicio,
Fim,
centrodb.colaboradores.Nome AS Colaborador,
TIME_TO_SEC(TimeDiff(TIME_FORMAT(Fim,'%H:%i'), TIME_FORMAT(Inicio,'%H:%i')))/60 AS 'Horas Consumidas'
FROM centrodb.registoFisioterapia LEFT OUTER JOIN centrodb.utentes
ON centrodb.utentes.Id = centrodb.registoFisioterapia.utente
LEFT OUTER JOIN colaboradores
ON centrodb.colaboradores.codigo = centrodb.registoFisioterapia.Nome
where centrodb.registoFisioterapia.'Data' between '2018-03-26' And '2018-04-25' AND centrodb.colaboradores.Nome = 'TÂNIA LOPES') AS A
GROUP BY A.Colaborador
Result: 04:00, but it should have resulted in 64:00.
Can anyone help me solve this problem?