Urtigao 0 Denunciar post Postado Janeiro 26, 2008 boa tarde, criei uma tabela contendo os campos data, hora_entrada e hora saida. o intuito é fazer um controle de tempo trabalhado, podendo ter várias marcações de entrada e saída em um dia. com o subtime eu consigo calcular o tempo trabalhado de um registro, porem qdo uso com "group by data" apenas uma marcação por data é calculada. select subtime(hora_saida,hora_entrada) , data from tb_horario group by data tentei colocar um sum nos campos de hora: select sum(subtime(hora_saida,hora_entrada)) , data from tb_horario group by data funcionou, porém o formato retornado foi algo como: 08:10 retornou 81000 com um time_format o problema foi contornado: select time_format(sum(subtime(saida,entrada)),'%H:%i'), data from tb_horario group by data mas houve casos em que o valor retornou algo como: 86900 e 48600 usando uma analogia com o 81000 os valores em hora deveriam ser 8:69:00 e 4:86:00, nestes dois casos retornam null na formatação de data. o "correto" seria o mysql retornar 90900 e 52600 respectivamente, ou seja, com o time_format deveriam retornar 09:09:00 e 5:26:00. alguém sabe como posso fazer para que eu consigo o que desejo? Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Janeiro 27, 2008 Urtigao, eu posso estar falando besteira, mas eu acho q SUM() eh uma funçao meramente matematica e portanto incapaz de somar corretamente datas, jah q teoricamente pra ele 100 segundos seriam 1 minuto. A soluçao entao pro seu problema seria transformar tudo em segundos antes de somar, pq entao em segundos ele faria a conta corretamente , e eh necessario a subquery pq q eu saiba a funçao de agrgação deve ficar sempre por cima de todas por motivos obvios , gerando assim uma subquery para converter de volta de segundos para hora normal o SQL seria algo assim select sec_to_time(segundos) , data from ( select sum(time_to_sec(subtime(saida,entrada))) as segundos , data from tb_horario group by data ) as abc Espero ter ajudado, mas agora fica a minha duvida, aparentemente seu sistema soh trabalha com horas, mas e se o funcionario virar a noite trabalhando? Compartilhar este post Link para o post Compartilhar em outros sites