Problema de precisão firebird

Firebird

15/10/2010

Pessoal preciso fazer uma conta no meu select que o resultado pode ser um número de mais de 11 digitos, fazendo sem dar cast em nada ele retorna um erro de estouro de precisão de integer, até ai tudo bem mesmo que a operação está sendo feita entre um int e um decimal e o que deveria prevalecer para o resultado seria o tipo de maior precisão que seria o decimal, mas procurei na net e percebi que o firebird tem esse problema mesmo, então tentei colocar casts de todas a forma até ficar assim como estão vendo em todos os lugares, mas continua dando o abençoado erro de precisão, alguém pode me ajudar, não faz muito tempo que mexo com firebird e agora que estou começando precisar a fazer estatísticas e já enfrentei esse problema, outra forma de me ajudar é me dizer se realmente não tem nada nativo dele que calcule a diferença de datas em minutos, desde já agradeço a todos que responderem.

select
  CAST(
  CAST(
        coalesce(CAST(movimentos_itens_tbl.DATA_HORA_SAIDA-
    movimentos_itens_tbl.DATA_HORA_ENTRADA AS NUMERIC(18,8)),0)
            AS NUMERIC(18,8)
        ) *
        CAST(86164.09
        AS NUMERIC(18,8)
        )
  AS NUMERIC(18,8)
  )
from movimentos_tbl
inner join movimentos_itens_tbl 
on movimentos_itens_tbl.id_movimentos =  movimentos_tbl.id_movimentos
inner join servicos_tbl
on servicos_tbl.id_servicos = movimentos_tbl.id_servicos
inner join etapas_tbl
on etapas_tbl.ID_ETAPAS = movimentos_itens_tbl.id_etapas
inner join servicos_etapas_tbl
on servicos_etapas_tbl.ID_SERVICOS = servicos_tbl.id_servicos
and SERVICOS_ETAPAS_TBL.id_etapas = ETAPAS_TBL.ID_ETAPAS
inner join usuarios_tbl
on usuarios_tbl.id_usuarios = movimentos_tbl.ID_USUARIOS
Vinicius Vieira

Vinicius Vieira

Curtidas 0

Respostas

Eriley Barbosa

Eriley Barbosa

15/10/2010

Veja se o tópico abaixo te ajuda: http://www.activedelphi.com.br/forum/viewtopic.php?p=266943&sid=8ced71e1ff82a2c869d30862ba01d40e
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

15/10/2010

select
  (movimentos_itens_tbl.DATA_HORA_SAIDA-movimentos_itens_tbl.DATA_HORA_ENTRADA) intervalo_dias,
  (movimentos_itens_tbl.DATA_HORA_SAIDA-movimentos_itens_tbl.DATA_HORA_ENTRADA)*1440/60 intervalo_horas,
  (movimentos_itens_tbl.DATA_HORA_SAIDA-movimentos_itens_tbl.DATA_HORA_ENTRADA)*1440 intervalo_minutos
from
  movimentos_tbl
inner join movimentos_itens_tbl
  on movimentos_itens_tbl.id_movimentos =  movimentos_tbl.id_movimentos
inner join servicos_tbl
  on servicos_tbl.id_servicos = movimentos_tbl.id_servicos
inner join etapas_tbl
  on etapas_tbl.ID_ETAPAS = movimentos_itens_tbl.id_etapas
inner join servicos_etapas_tbl
  on servicos_etapas_tbl.ID_SERVICOS = servicos_tbl.id_servicos
  and SERVICOS_ETAPAS_TBL.id_etapas = ETAPAS_TBL.ID_ETAPAS
inner join usuarios_tbl
  on usuarios_tbl.id_usuarios = movimentos_tbl.ID_USUARIOS

GOSTEI 0
Vinicius Vieira

Vinicius Vieira

15/10/2010


  Obrigado pelas respostas pessoal;
GOSTEI 0
POSTAR