Tratar horas como Integer. Alguém teve essa experiência?

Delphi

28/09/2012

Bom dia, estou trabalhando em um modulo de ficha-ponto
e me deram a sugestão de tratar as horas como integer no banco,
o que facilitaria nos cálculos.
Alguém trabalha dessa maneira? Não pode trazer algum problema no futuro?

Gostaria da opinião dos colegas antes de começar a implementação.

Abraços,
Julian.
Julian Luis

Julian Luis

Curtidas 0

Respostas

Bruno Leandro

Bruno Leandro

28/09/2012

Qual banco de dados voce utiliza
GOSTEI 0
Julian Luis

Julian Luis

28/09/2012

Firebird 2.1
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

28/09/2012

Qual tipo de banco de dados você vai utilizar?

Qual é o formato das horas em numerais çque você irá gravar no banco? Ex. 2,5h | 4h | 3.6h.
GOSTEI 0
Julian Luis

Julian Luis

28/09/2012

Utilizo firebird, usaria da seguinte forma:

10:53 salvaria como 1053
23:59 || 2359
14:00 || 1400
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

28/09/2012

Sinceramente grave como varchar, ou text...é mais facil de não se perder com a formatação exata da hora 10':'04 acho mais facil tratar dados string do que integer, integer seria mais facil de somar e tals mas o controle terá que ser muito bem feito, e se der algum erro no seu calculo você vai ter dores de cabeça para resolver depois ou achar onde esta o "furo" e vai ser debug pra tudo quanto e lado, eu faria com campo string e trataria ele no código...Mas veja como fica melhor para você tratar este tipo de dado.
Mas cada programador tem um jeito diferente de lidar com os dados, você tem que ver um jeito que fique facil para você tratar os dados. Pra mim funciona tratando horas como string..mas talvez pra vc seja melhor tratar horas como integer, é relativo.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

28/09/2012

Sinceramente grave como varchar, ou text...é mais facil de não se perder com a formatação exata da hora 10':'04 acho mais facil tratar dados string do que integer, integer seria mais facil de somar e tals mas o controle terá que ser muito bem feito, e se der algum erro no seu calculo você vai ter dores de cabeça para resolver depois ou achar onde esta o "furo" e vai ser debug pra tudo quanto e lado, eu faria com campo string e trataria ele no código...Mas veja como fica melhor para você tratar este tipo de dado.
Mas cada programador tem um jeito diferente de lidar com os dados, você tem que ver um jeito que fique facil para você tratar os dados. Pra mim funciona tratando horas como string..mas talvez pra vc seja melhor tratar horas como integer, é relativo.


Esqueci de mencionar,...Teve uma rotina que eu fiz assim...
Antes de salvar você pode converter suas horas em minutos e somar ao resultado os minutos da hora ai ficaria mais facil tratar este tipo de dado.
Exemplo .

1h e 30 minutos

60 minutos
+
30 minutos
=
90 minutos= 90 gravado no banco.
GOSTEI 0
Bruno Leandro

Bruno Leandro

28/09/2012

a partir da versao 2.1 existe a função DATEDIFF pra voce pegar a diferença entre duas datas exemplo
o cara entrou as 8:00 e saiu as 18:00

select datediff (hours, datahora_saida, datahora_entrada)

com esse comando voce pega as horas de diferença
GOSTEI 0
Julian Luis

Julian Luis

28/09/2012

Leonardo, parece interessante trabalhar como string, vou fazer uns testes aqui.
Valeu pela resposta

Bruno, essa função é útil porém a ordem é não trabalhar com tipo Time hehe.
Mas valeu pela ajuda
GOSTEI 0
POSTAR