DateDiff retornando horas, muntos e segundos como?
11/12/2007
0
se o funcionário entrou para trabalhar as 06:00 e saiu as 14:10 então preciso que me retorne a diferença no caso seria 8:10 usando o datediff ele me retorna somente 8.
Joao_arthur
Posts
11/01/2008
Djjunior
lembrando que campos dataHora são na realidade do tipo Float onde a parte inteira são os dias e a fração as horas.
13/01/2008
Joao_arthur
13/01/2008
Djjunior
Se você estiver guardando a data junto com a hora não dá erro não
O problema é só na hora de exibir formatar as horas, mas isso só se o resultado der mais de 24 que zera, não sei como fazer em sql, no Delphi eu fiz umas funções pra formatar a hora em dias/h:m:s ou [hh]:mm:ss, se quizer lhe passo depois.
14/01/2008
Joao_arthur
joao_moreira_97@hotmail.com
valew cara.
15/01/2008
Djjunior
function FormatHoras(time: double; havDay: boolean): string; var dias, horas: double; Pos1, horas24: integer; aux1: string; begin dias := trunc(time); horas := frac(time); if havDay then Result := FloatToStr(dias) + ´d ´ + TimeToStr(horas) else begin aux1 := TimeToStr(horas); pos1 := pos(´:´, aux1); horas24 := StrToInt(copy(aux1, 1, pos1 -1)) + (trunc(dias) * 24); Result := IntToStr(horas24) + Copy(aux1, pos1, Length(aux1)); end; end; procedure TForm1.Button1Click(Sender: TObject); var dt1, dt2: tdatetime; begin dt1 := StrToDateTime(Edit1.Text); dt2 := StrToDateTime(Edit2.Text); Edit3.Text := FormatHoras(dt2 - dt1, True); Edit4.Text := FormatHoras(dt2 - dt1, False); end;
O que você tem que ter em mente é que
15/01/08 09:02 é igual a 39.462,376388888900 vc pode ver isso no excel por isso que funciona simplesmente fazer um menos o outro, e que tanto faz seu computador estar setado para 12 ou 24 horas.
Clique aqui para fazer login e interagir na Comunidade :)