[firebase-br] Concatenar Data

Eduardo Bahiense eduardo em icontroller.com.br
Qui Fev 14 19:11:41 -03 2008


Olá Uilton

Como algum colega já disse, formatação de datas e valores numéricos é 
função do cliente e não do servidor. Eu, particularmente, acho que 
deveria haver alguma função nativa do tipo FormatDateTime() no banco.
Quando vc tenta converter uma data para string, o FB usa o formato 
universal que é 'yyyy-mm-dd'. Como le tem que converter para string para 
concatenar, dá a mesma coisa.
Você tem três quatro para contornar esse problema:
   1. Usar uma UDF que faça isso, retorne uma data formatada segundo uma 
máscara. Observe que parece haver um consenso na comunidade de evitar 
UDFs. Eu procuro utilizar somente as das distribuições oficiais, que não 
fazem isso.
   2. Extrair os componentes da data pela função EXTRACT e concatenar 
separadamente.
      EXTRACT(DAY   FROM CURRENT_DATE)||'/'||
      EXTRACT(MONTH FROM CURRENT_DATE)||'/'||
      EXTRACT(YEAR  FROM CURRENT_DATE)
   Esta abordagem tem o efeito colateral de não completar os zeros 
(1/1/2008)
    3. Extrair os componentes por substring se valendo do formato universal.
      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)
    Esta abordagem pode tornar o processo um pouco mais lento, além de 
deixar a query bem poluída, mas funciona perfeitamente, e, dependo do 
caso, a perda de performance é imperceptível.
    4. Trazer as duas informações em campos separados e formatar 
concatenar na aplicação.

Abs

Eduardo
Uilton Campos escreveu:
> Boa tarde a todos,
> 
> estou precisando concatenar um campo DATE, porem estou passando por um
> problema, a data ta vindo no formato 'yyyy/mm/dd', pelo que pesquisei
> parece que o problema eh por causa do operador de concatenação '||',
> se alguem ja tiver passado por isso ou tem alguma dica pra q eu possa
> realizar a concatenação e a data vir no formato 'dd/mm/yyyy',
> agradeceria,
> 
> segue abaixo o select que estou usando:
> 
> SELECT COD_REQUISICAO, 'Requisição: ' || COD_REQUISICAO || ' - Data: '
> || DT_REQUISICAO AS COD_DATA_REQUISICAO
> FROM REQUISICOES_COMPRAS
> 
> ______________________________________________
> 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