[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