Somar horas
Olá pessoal. Boa tarde.
Tô tentando fazer uma query que selecione a soma de um campo que tem como tipo (time).
há possibilidade?
Grato.
Tô tentando fazer uma query que selecione a soma de um campo que tem como tipo (time).
há possibilidade?
Grato.
Fabiosys
Curtidas 0
Respostas
Rodolpho123
04/04/2007
Sim, vc pode executar esta soma em seu SELECT, como mostra o exemplo abaixo:
Lembrando que as unidades de soma refere-se aos [b:689b4ba8e2]segundos[/b:689b4ba8e2] e não [b:689b4ba8e2]minutos[/b:689b4ba8e2]
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]
GOSTEI 0
Fabiosys
04/04/2007
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?
GOSTEI 0
Rodolpho123
04/04/2007
Use a função [b:ba9156c0c8]extract[/b:ba9156c0c8]
select extract(hour from campo_hora1) + extract(hour from campo_hora2) from tabela
GOSTEI 0
Cabelo
04/04/2007
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..
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..
GOSTEI 0
Fabiosys
04/04/2007
Fiz o Teste só que dá erro no SQL. !!??
GOSTEI 0
Cabelo
04/04/2007
Qual é o erro..
Pois uso este select aqui e funciona muito bem..
Outra coisa.. qual é a versão do seu firebird???
Pois uso este select aqui e funciona muito bem..
Outra coisa.. qual é a versão do seu firebird???
GOSTEI 0
Fabiosys
04/04/2007
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.
GOSTEI 0
Cabelo
04/04/2007
[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..
GOSTEI 0
Fabiosys
04/04/2007
Vlw. Vou fazer o teste.
Logo logo digo se deu certo.
mas desde já agradeço.
Logo logo digo se deu certo.
mas desde já agradeço.
GOSTEI 0
Fabiosys
04/04/2007
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
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
GOSTEI 0
Cabelo
04/04/2007
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..
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..
GOSTEI 0
Fabiosys
04/04/2007
Vlw consegui já. Obrigado mesmo. ok.
Qulaquer coisa Estamos por qui.
Qulaquer coisa Estamos por qui.
GOSTEI 0