DateDiff retornando horas, muntos e segundos como?
preciso retornar as horas, minutos e segundos em SQL através da função DateDiff tem como implementar? pois o detediff retorna a diferença entre horas a cada 60 minutos exemplo:
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.
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
Curtidas 0
Respostas
Djjunior
11/12/2007
faça somente a subtração das horas e formate (se for via sql veja o cast/convert) se for via Delphi por exemplo use um formatDateTime.
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.
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.
GOSTEI 0
Joao_arthur
11/12/2007
amigo subtrair as horas não é correto pois o pc pode ta configurado pra trabalhar como 24h ou 12h entendeu e tem mais se o funcionário entrar pra trabalhar em um dia e sair no outro vai calcular errado.
GOSTEI 0
Djjunior
11/12/2007
Com relação a configuração de 12 ou 24 tanto faz.
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.
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.
GOSTEI 0
Joao_arthur
11/12/2007
ok junior se der pra você passar pra mim eu agradeço cara
joao_moreira_97@hotmail.com
valew cara.
joao_moreira_97@hotmail.com
valew cara.
GOSTEI 0
Djjunior
11/12/2007
Taí, nesse exemplo vc vai precisar de 4 Edits e um button no seu form
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.
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.
GOSTEI 0
Joao_arthur
11/12/2007
ok junior valeu cara...
GOSTEI 0