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