Se um dos resultados deu 45, tá na cara que o retorno de DATEDIFF() é float. Não é exato pq a quantidade real de dias e horas que um ano possui não é exatamente 365, e sim 365.25. Até no próprio Delphi o tipo TDateTime é declarado como um double(vide help do Delphi).
Mas pq 365.25 dias? Muito simples! Se formos nos recordar das aulas de geografia, um ano corresponde a quantidade de dias que a Terra da uma volta completa ao redor do sol. Só que não são necessariamente 365 dias, e sim 365 dias e 6 horas (6 horas = 0.25 dia). Por isso que a cada quatro anos, essas 6 horas são acumuladas (4 x 6 = 24 horas = 1 dia) para gerar o dia 29 de Fevereiro, o famoso ano bissexto. O outro motivo para que uma data seja representada como float é tb pelo fato deste mesmo tipo de dados ser usado para representar horas. Ou seja, um determinado período no tempo pode ser representado em um double contendo data e hora. Por isso que é feito o CAST no resultado para um valor inteiro. No momento da conversão, é perfeitamente natural e até aceitável que o valor seja arredondado. Sds. ________________________________ To: delphi-br@yahoogrupos.com.br From: [EMAIL PROTECTED] Date: Tue, 5 Feb 2008 13:29:38 -0200 Subject: Re: [delphi-br] na REAL, DATEDIFF retorna INT ou FLOAT ??? interessante... Flavio, Faça um Cast para integer... SELECT Cast(DATEDIFF(DAY,'1984/05/21','2007/04/01')/365 as integer) Resultado: 22 SELECT cast(2*DATEDIFF(DAY,'1984/05/21','2007/04/01')/365 as integer) Resultado ???? [ ]´s Moacir Flavio escreveu: > Olá pessoal, bom dia, > > esses dias me apareceu uma grande pulga fazendo a festa atrás da minha > orelha. Resolvi colocar no comando SQL: > > ---------------------------------------------------------- > SELECT DATEDIFF(DAY,'1984/05/21','2007/04/01')/365 > > Resultado: 22 > > ...e depois assim: > > SELECT 2*DATEDIFF(DAY,'1984/05/21','2007/04/01')/365 > > Resultado: 45 > ---------------------------------------------------------- > > Como assim? 2 * 22 = 45 ??? > > Alguém tem uma explicação para esse furo da matemática??? > > > Obrigado pela atenção. > Flávio. > > > --------------------------------- > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para > armazenamento! > > [As partes desta mensagem que não continham texto foram removidas] > > > > _________________________________________________________________ Conheça o Windows Live Spaces, a rede de relacionamentos do Messenger! http://www.amigosdomessenger.com.br/