[firebase-br] Converter um campo inteiro para data

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Seg Out 16 13:10:55 -03 2006


bom, primeiramente não sabemos como as datas estão gravadas na base do 
Welson Avelar, por isto qualquer especulação tem uma probabilidade de ajuda 
relativamente pequena.

Acabei demonstrando duas possibilidades (data formatada como inteiro, e dias 
passados desde 1900), que são disparadamente as mais utilizadas. Mas há 
inúmeras outras possibilidades: ano + número da semana do ano + dia da 
semana ou ano + número do dia do ano.

Apesar de não serem elegantes, elas funcionam... Mas como serão utilizadas 
baseadas em campos de tabelas existentes no banco de dados, pode-se criar 
uma VIEW ou Campo Calculado (COMPUTED BY) para torná-las mais amigáveis ao 
DBA / utilizador. Em caso de alteração, pode-se ainda escrever uma trigger 
que atualize o campo correto.

Quanto à usar UDF... eu procuro evitar o máximo que eu puder... e as razões 
são simples: São muito fáceis de fazer em windows, razoáveis em linux, 
ligeiramente difíceis em FreeBSD, e quase que inviáveis em outros UNICES e 
plataformas não-X86. Isto sem contar a necessidade de copiá-las para a pasta 
UDF após a instalação, e preucauções extras com o restore (em algumas 
plataformas).

Claro que quem administra um único servidor não terá dificuldades, mas 
quando precisa dar atendimento telefônico para dezenas de "clientes 
leigos"...

Sendo assim, entendam esta mensagem como uma humilde opinião (sem falsa 
modéstia) e não como uma verdade imutável ou crítica.

======================
Eduardo Jedliczka
Membro do TeamFB - FireBase
Apucarana - PR
======================
"Posso não concordar com nada do que dizes.
Mas defenderei até a morte o seu direito de dizê-lo"
(Voltaire 1694-1778)

----- Original Message ----- 
From: "Jeferson Oliveira" <jefersonfoliveira em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, October 16, 2006 1:51 PM
Subject: Re: [firebase-br] Converter um campo inteiro para data


Isso funciona perfeitamente.
Mas acredito que o que ele gostaria seria (se funcionasse) algo como
select cast(39006 as date) from RDB$DATABASE

As linguagens de programação, normalmente, tratam os tipos Date e
DateTime como Integer e Float, respectivamente. Permitindo assim
conversões diretas entre um tipo e outro.
No Delphi o resultado da operação abaixo será '16/10/2006'
FormatDateTime('DD/MM/YYYY', 39006);

Como não conheço tais possibilidades no Firebird, a única solução que
vejo para o caso seria através de uma UDF.


Abraço!
Jeferson Oliveira

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista