[firebase-br] Armazenar uma Data em um campo Concatenado

Eduardo Bahiense eduardo em icontroller.com.br
Ter Mar 18 22:18:06 -03 2008


Olá Carlos

Embora alguém já tenha respondido sua mensagem original, vou tentar te 
ajudar.

Primeiramente, você deve compreender que formatar datas, moedas e 
números não é função de servidor, pois eles são feitos para atender à 
china hospedado nos EUA, por exemplo.

Bem, entendido isso, agora você precisa compreender que datas, 
internamente, são números inteiros, sendo que data/hora são floats, onde 
a parte inteira é a data e a parte decimal corresponde às horas, 
minutos, segundos e milisegundos. Quando você dá um select e utiliza um 
componente qualquer, este utiliza as informações do sistema operacional 
para te exibir no formato correto, mas o servidor retornou um nuémero 
para ele.

Bem, até aí morreu o Neves. Todo mundo sabe disso. O que as pessoas 
parecem não compreender é que quando você pede que ele represente a data 
como texto, seja utilizando CAST ou usando concatenação, o FB, que não 
se preocupa, por definição, com informações de locale, escolhe o formato 
'yyyy-mm-dd' para exibir este núemro em representação de texto.

Agora a coisa fica mais clara. Existem artifícos para se contornar isso. 
  Um dele é utilizar algumas UDFs que formatam datas. Outra é você se 
valer que ele usa o formato 'yyyy-mm-dd' e "trocar as bolas", como no 
exemplo abaixo:

SELECT
     CURRENT_DATE AS LOCALE_DATE,
     CAST(CURRENT_DATE AS VARCHAR(10)) AS FB_TEXT_DATE,
            SUBSTRING(CAST(CURRENT_DATE AS VARCHAR(10)) FROM 9 FOR 2)
     ||'/'||SUBSTRING(CAST(CURRENT_DATE AS VARCHAR(10)) FROM 6 FOR 2)
     ||'/'||SUBSTRING(CAST(CURRENT_DATE AS VARCHAR(10)) FROM 1 FOR 4)
     AS BR_DATE,
     CAST(CURRENT_DATE AS VARCHAR(10)) AS FB_DATE

FROM
     RDB$DATABASE

Agora com concatenação e com outro separador

SELECT
     CURRENT_DATE AS LOCALE_DATE,
     ''||CURRENT_DATE AS FB_TEXT_DATE,
            SUBSTRING(''||CURRENT_DATE FROM 9 FOR 2)
     ||'.'||SUBSTRING(''||CURRENT_DATE FROM 6 FOR 2)
     ||'.'||SUBSTRING(''||CURRENT_DATE FROM 1 FOR 4)
     AS MY_FMT_DATE
FROM
     RDB$DATABASE

Abs, Eduardo


Carlos Andrade escreveu:
> Boa Noite!
> 
>  
> 
>             Tenho um campo do tipo “BLOB Text” na minha tabela que armazena
> o histórico de algumas operações. Nesta tabela, os registros são inseridos
> através de Triggers. Só que há um probleminha... Este campo recebe uma DATA
> de outra tabela só que está armazenando de trás para frente, ou seja,
> 2008-03-16. Alguém pode me dizer como resolver isso?
> 
>  
> 
> Obrigado pela disponibilidade de todos!
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista