Problema para recuperar horarios no MySQL Pelo java

2 respostas
W

Estou implementando um banco de horas extra. uso os campos no mysql do tipo time, quando eu guardo de uma só vez por exemplo 35:00:00 que se refere a 35hras extra, o mysql se comporta mto bem ele armazena sem problemas, e quando dou um select para recuperar essa hora direto no mysql ele tb recupera de boa 35hras e pronto. agora quando o java conecta no banco e tento recuperar essas 35hras me da um erro falando que é ilegal tentar recuperar o valor 35hras pq tecnicamente 35:00:00 não existe, ou por exemplo se eu adicionar 24 horas ele me retorna 00:00:00 visto que 24 é meia noite, diz que o erro é no java.sql.time illegal hour ‘35’. alguem ja viu isso? grato

2 Respostas

drsmachado

Meu camarada, isso é uma coisa horrível.
Você não está medindo um intervalo de tempo, mas a quantidade do mesmo.
Como assim?
Pense no seguinte, se você quer salvar dados do tipo time, precisa gravar a hora de início, hora de intervalo, volta de intervalo e hora de término do período trabalhado.
Por exemplo, o funcionário entra as 8:15:30 e sai para o almoço (intervalo) as 12:10:02, retorna às 13:00:00 e o horário normal se encerra as 17:00:00. Caso ele saia neste horário, fechará:
17:00:00 - 13:00:00= 4
12:10:02 - 8:15:30= 3:54:32
Tota: 7:54:32, ou seja, deve 00:05:28
Agora, se ao invés de sair as 18 em ponto, o funcionário sai as 19:00:00:
19:00:00 - 13:00:00= 6
12:10:02 - 8:15:30= 3:54:32
9:54:32. Como, normalmente, o horário diário deve ser de 8 horas, ele possui 1:54:32 de banco.
Entendeu? Você define os pontos, o cálculo será feito posteriormente. Se quiser guardar as 35 horas, precisará definir isto como algum tipo de unidade totalizadora, não uma de identificação de tempo.

W

drsmachado:
Meu camarada, isso é uma coisa horrível.
Você não está medindo um intervalo de tempo, mas a quantidade do mesmo.
Como assim?
Pense no seguinte, se você quer salvar dados do tipo time, precisa gravar a hora de início, hora de intervalo, volta de intervalo e hora de término do período trabalhado.
Por exemplo, o funcionário entra as 8:15:30 e sai para o almoço (intervalo) as 12:10:02, retorna às 13:00:00 e o horário normal se encerra as 17:00:00. Caso ele saia neste horário, fechará:
17:00:00 - 13:00:00= 4
12:10:02 - 8:15:30= 3:54:32
Tota: 7:54:32, ou seja, deve 00:05:28
Agora, se ao invés de sair as 18 em ponto, o funcionário sai as 19:00:00:
19:00:00 - 13:00:00= 6
12:10:02 - 8:15:30= 3:54:32
9:54:32. Como, normalmente, o horário diário deve ser de 8 horas, ele possui 1:54:32 de banco.
Entendeu? Você define os pontos, o cálculo será feito posteriormente. Se quiser guardar as 35 horas, precisará definir isto como algum tipo de unidade totalizadora, não uma de identificação de tempo.

Devo fazer então a operação com os horarios calculados as diferenças dentro do mysql e trazer calculados para o java?
estou tentando executar essa linha aki pelo java mais olha a zica que me retorna, vê se ja se deparou com isso.

Conecta.conecta(); String SQLSelection = "select SEC_TO_TIME(sum(TIME_TO_SEC(his_tempo))) as total from historico where his_fun_cod = 1"; Conecta.executaSQL(SQLSelection);

Segue abaixo o erro x(

Nov 03, 2012 8:32:59 PM Manutencao.FormAddHoras B_ProximoActionPerformed Grave: null java.sql.SQLException: Before start of result set

ahh claro só um detalhe esse metodo Conecta.executaSQL() ele é um método criado que ta executando uma query xD fiz só pra abreviar o caminho.

Criado 3 de novembro de 2012
Ultima resposta 3 de nov. de 2012
Respostas 2
Participantes 2