Fórum Soma de horas #364500
30/09/2008
0
Obrigado
Felipeiw
Curtir tópico
+ 0Posts
01/10/2008
Micheus
Se for, combine a data e a hora de início, bem como a data e hora de termino e depois faça a diferença entre eles (vc terá dois TDateTime). Ex.:
DifHora1 := (DtTermino1 +HrTermino1) -(DtInicio1 +HrInicio1); DifHora2 := (DtTermino2 +HrTermino2) -(DtInicio2 +HrInicio2); SomaHora := DifHora1 +DifHora2;
O tipo TDateTime (que é na verdade um Double), representa a quantidade de dias decorridos desde 12/30/1899, então, a subtração de um do outro vai resultar no número de anos, meses, dias, horas, minutos... decorridos entre as mesmas.
Abraços
Gostei + 0
01/10/2008
Felipeiw
Gostei + 0
01/10/2008
Micheus
Se for no SQL, que banco de dados vc está usando?
Se for no código, não há problemas, e seria a mesma coisa, porque vc tem neste seu caso campos TDateField e TTimeField, onde vc pode realizar a operação citada usando a propriedade [i:cee7c37084]Value[/i:cee7c37084], tipo:
TabPontoDtEntrada1.Value +TabPontoHrEntrada1.Value ....
Gostei + 0
01/10/2008
Felipeiw
Obrigado
Gostei + 0
02/10/2008
Micheus
select (cast(N.DTENTRADA as date) +N.HRENTRADA1) as Entrada1, (cast(N.DTENTRADA as date) +N.HRSAIDA1) as Saida1, ((cast(N.DTENTRADA as date) +N.HRSAIDA1) -(cast(N.DTENTRADA as date) +N.HRENTRADA1)) as Diferenca1 from Tabela
Já para ser mostrado no formato hh:mm, se for necessário, há duas possibilidades: usar os eventos [i:89230ef620]OnGetValue[/i:89230ef620] e [i:89230ef620]OnSetValue[/i:89230ef620] do field ou usar um campo calculado, do tipo TDateTime e atribuir este valor a ele.
Quanto a ser melhor o uso de timestamp, date ou time, acho que deve ser um opção pessoal. Particularmente, quando necessito armazenar data e hora juntos eu uso o timestamp. Do contrário, uso os tipos conforme o caso - date e/ou time.
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)