Re: RES: [firebase-br] Operaçoes com Data e Hora (SOLUÇÃO!!)
Carlos H. Cantu
listas em warmboot.com.br
Sáb Jun 18 08:32:15 -03 2005
Isso é uma situação que acontece com qualquer tipo de cálculo, não só
com datas/horas.
O parser do firebird se baseia no número que ele encontra pra
"deduzir" qual a precisão que ele deve assumir. Quando voce coloca
explicitamente as casas decimais, ele "sabe" que o resultado poderá
ter casas decimais, caso contrário, ele entende que é um número
inteiro e acaba gerando um número inteiro como resultado tb.
[]s
Cantu
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br
DdSG> Pessoal,
DdSG> Depois de muito quebrar a cabeça, consegui descobrir porquê o select abaixo
DdSG> não conseguia somar uma hora na hora atual.
DdSG> Como parece ser uma situação desconhecida pela maioria, resolvi postar aqui
DdSG> a solução:
DdSG> select
DdSG> current_timestamp as HOJE,
DdSG> cast((current_timestamp + (1/24)) as timestamp) as DEPOIS
DdSG> from rdb$database
DdSG> O select acima não funciona porque (1/24) trará um número inteiro, nesse
DdSG> caso, zero.
DdSG> O resultado é diferente se eu usar (1.0/24.0) que trará um número real com
DdSG> uma casa decimal depois da vírgula.
DdSG> Daí, o select abaixo funciona se for assim:
DdSG> select
DdSG> current_timestamp as HOJE,
DdSG> cast((current_timestamp + (1.000000/24.000000)) as timestamp) as DEPOIS
DdSG> from rdb$database
DdSG> Engraçado, não?
DdSG> Faça os testes:
DdSG> Select (1 / 24) from rdb$database
DdSG> Select (1.0 / 24.0) from rdb$database
DdSG> Select (1.00 / 24.00) from rdb$database
DdSG> Select (1.000 / 24.000) from rdb$database
DdSG> Select (1.0000 / 24.0000) from rdb$database
DdSG> Pelo que parece, essa é uma situação que não consta nas referências do
DdSG> Interbase nem do Firebird...
DdSG> [ ]'s
DdSG> ~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
DdSG> Denis da Silva Guerra
Mais detalhes sobre a lista de discussão lista