Array
(
)

Soma de hora mysql

Edaurdo Miranda
   - 09 jan 2016

Olá, tenho uma tabela com os campos id, descricao, data_inicio, data_fim, categoria
tenhos os seguintes registros
1 | nononono | 2016-01-01 12:00:00 | 2016-01-01 12:00:00 | categoria1
2 | nononono | 2016-01-01 13:00:00 | 2016-01-01 13:30:00 | categoria1
3 | nononono | 2016-01-01 14:00:00 | 2016-01-01 14:30:00 | categoria2
Preciso calcular o tempo subtraindo a data_fim - data_inici (até aí tudo bem, consegui fazer com o TIMEDIFF)
o problema acontece quando tento somar esse tempo para obter o tempo total
eu coloquei um SUM, mas o resultado não aparece corretamente
depois eu preciso agrupar a soma por categoria
e depois converter a informação do tempo parcial e o tempo total para usar uma porcentagem
se puderem me ajudar, agradeço muito

Alan Mario
   - 09 jan 2016

Boa tarde Eduardo, segue um código que achei e pode te ajudar:

#Código

SELECT time_format( SEC_TO_TIME( SUM( TIME_TO_SEC( TOTAL ) ) ),'%H:%i:%s') 
AS total_horas FROM horario where PRESTADOR='NOME' and MONTH(data) = 1 and YEAR(data) = 2015;

Edaurdo Miranda
   - 10 jan 2016

Oi Alan, muito obrigado pela ajuda, deu certinho, mas agora estou com outro problema.
Essa tabela tem em torno de 1600 registros, se eu delimitar a quantidade de registros para até 445 registros, o calculo aparece certinho, fica em torno de 837h e uns quebrados,
acima disso não calula mais, aparece um valor em torno de 880 horas, e só isso, parece que ele não calcula mais registro nenhum acima disso, saberia me dizer por que?
eu ohei os registros individualmente para ver se algum campo da hora aparece como, o que poderia dar algum conflito, mas não, os campos estão preechidos certinhos

grato

Edaurdo Miranda
   - 10 jan 2016

Oi Alan, muito obrigado pela ajuda, deu certinho, mas agora estou com outro problema.
Essa tabela tem em torno de 1600 registros, se eu delimitar a quantidade de registros para até 445 registros, o calculo aparece certinho, fica em torno de 837h e uns quebrados,
acima disso não calula mais, aparece um valor em torno de 880 horas, e só isso, parece que ele não calcula mais registro nenhum acima disso, saberia me dizer por que?
eu ohei os registros individualmente para ver se algum campo da hora aparece como nulo, o que poderia dar algum conflito, mas não, os campos estão preenchidos certinhos

grato

Alan Mario
   - 10 jan 2016

Sabe informar se é alguma limitação do sgbd?

Edaurdo Miranda
   - 11 jan 2016

Olá Alan, a principio não, me parece memória, (existe isso no mysql?) o resultado fica 838:59:59, o que dá pra perceber que é algum erro,
nos cadastro os segundos sempre são 00, então não teria porque aparecer 59 no final. eu posso te mandar essa tabela pra você dar uma olhada, se você quiser
muito obrigado pela ajuda

Alan Mario
   - 11 jan 2016

Poxa Eduardo, queria pode te ajudar mais, mas sinceramente não sei como resolver esse problema.