Fórum Somar horas #58132

04/04/2007

0

Olá pessoal. Boa tarde.

Tô tentando fazer uma query que selecione a soma de um campo que tem como tipo (time).

há possibilidade?

Grato.


Fabiosys

Fabiosys

Responder

Posts

08/04/2007

Rodolpho123

Sim, vc pode executar esta soma em seu SELECT, como mostra o exemplo abaixo:
select
  campo_hora + 60
from
  tabela

Lembrando que as unidades de soma refere-se aos [b:689b4ba8e2]segundos[/b:689b4ba8e2] e não [b:689b4ba8e2]minutos[/b:689b4ba8e2]


Responder

Gostei + 0

08/04/2007

Fabiosys

Eu quero somar dois campo do tipo time. e os dois campos podem ter qualquer valor de hora. vai dar pra fazer desse jeito que vc disse?


Responder

Gostei + 0

08/04/2007

Rodolpho123

Use a função [b:ba9156c0c8]extract[/b:ba9156c0c8]
select
   extract(hour from campo_hora1) + extract(hour from campo_hora2)
from tabela



Responder

Gostei + 0

09/04/2007

Cabelo

Você pode usar somente um select com cast

select SUM((campo_hora - CAST(´00:00:00.000´ AS TIME) / 3600) as D_SOMA_HORAS from Tabela where REGISTROS QUE DESEJA SOMAR

um abraço..


Responder

Gostei + 0

11/04/2007

Fabiosys

Fiz o Teste só que dá erro no SQL. !!??


Responder

Gostei + 0

11/04/2007

Cabelo

Qual é o erro..

Pois uso este select aqui e funciona muito bem..

Outra coisa.. qual é a versão do seu firebird???


Responder

Gostei + 0

12/04/2007

Fabiosys

Qual é o erro.. Pois uso este select aqui e funciona muito bem.. Outra coisa.. qual é a versão do seu firebird???




Olha...

Uso a versão 2.0.

mas... Acho que o erro não está no firebird e sim no ´select´.

quando eu coloco: select SUM((campo_hora - CAST(´00:00:00.000´ AS TIME) / 3600) as D_SOMA_HORAS... o erro dar na (as D_SOMA_HORAS)
outra coisa o campo é do tipo Time mesmo.

Espero que vc tenha entendido.

Agradeço sua compreensão.


Responder

Gostei + 0

13/04/2007

Cabelo

[quote:f9d2d5b99a=´Cabelo´]Qual é o erro.. Pois uso este select aqui e funciona muito bem.. Outra coisa.. qual é a versão do seu firebird???




Olha...

Uso a versão 2.0.

mas... Acho que o erro não está no firebird e sim no ´select´.

quando eu coloco: select SUM((campo_hora - CAST(´00:00:00.000´ AS TIME) / 3600) as D_SOMA_HORAS... o erro dar na (as D_SOMA_HORAS)
outra coisa o campo é do tipo Time mesmo.

Espero que vc tenha entendido.

Agradeço sua compreensão.[/quote:f9d2d5b99a]

Colega..

O campo campo_hora, tem que ser do tipo Time mesmo..

Outra coisa..acho qu epostei o sql errado.. :oops:

não é assim

select SUM((campo_hora - CAST(´00:00:00.000´ AS TIME) / 3600) as D_SOMA_HORAS


é assim :

select ((SUM(campo_hora - CAST(´00:00:00.000´ AS TIME))) / 3600) as D_SOMA_HORAS from tabela where COMPARAÇÕES


espero ter ajudado..


Responder

Gostei + 0

13/04/2007

Fabiosys

Vlw. Vou fazer o teste.

Logo logo digo se deu certo.

mas desde já agradeço.


Responder

Gostei + 0

16/04/2007

Fabiosys

Blz. Deu certo. Mas...

Não querendo saber demais tem como o resutado ficar em time também?
é que pelos meus cálculo o resutado não deu certo. Assim como eu posso não ter calculado também certu.

Agradeço sua compreensão.

Até +. :P


Responder

Gostei + 0

17/04/2007

Cabelo

Colega..

Só lembre-se que esta soma está em decimal.... isto é.. a parte inteira são horas e a parte decimal os minutos em DECIMAL... para saber seu resultado em minutos é necessário dividir por 60..

Em Time não dá.. pois o número é maior que 24 horas.. mas você pode transformar em TDateTime, para isso é só formatar como TDateTime usando o cast e o format que desejar.. asdatetime...

Um abraço..


Responder

Gostei + 0

20/04/2007

Fabiosys

Vlw consegui já. Obrigado mesmo. ok.

Qulaquer coisa Estamos por qui.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar