[firebase-br] FORMATAR A DATA PARA TODA A BASE DE DADOS

Gladiston Santana gladiston em vidy.com.br
Qua Abr 24 21:02:15 -03 2013


Porque  precisa que sua SP retorne data no formato texto quando seria muito
mais fácil retornar data(date) ou data-hora(timestamp) ?
No meu entendimento voce criou um grau de complexidade ao converter data em
texto quando é desnecessário porque o FB irá usar o formato do sistema ou o
formato definido no seu programa. Eu só fiz isso que você fez uma vez na
vida por achar que execute statement não aceitava :parametros , depois que
descobri que dá, retirei essas conversões trabalhosas.


Gladiston Santana
Departamento de TI
Grupo Vidy
Tel (11) 4787-3122 ramal 228
Rod. Régis Bittencourt 3360 - Km 272,5
Taboão da Serra - SP - CEP: 06793-000
Visite nosso site: www.vidy.com.br
Visite também : www.expolabor.com.br




Em 24 de abril de 2013 16:58, Sandro Souza <escovadordebits em gmail.com>escreveu:

> Bom dia/tarde/noite Mário.
>
> Geralmente, eu uso a função EXTRACT e concateno as partes no formato que eu
> quero.
> Criei algumas stored procedures selecionáveis para formatar valores do tipo
> TIMESTAMP para alguns formatos.
>
> Por exemplo:
>
> SET TERM ^ ;
> --
> CREATE PROCEDURE GLB_FORMATA_DATA(
>   DATA TIMESTAMP)
> RETURNS(
>   RESULTADO VARCHAR(10))
> AS
> BEGIN
>   -- Sem data?
>   IF(DATA IS NULL)THEN
>     -- Sem resultado tambem.
>     RESULTADO = NULL;
>   ELSE
>     -- Converte a data p/ texto no formato brasileiro.
>     RESULTADO = (LPAD(EXTRACT(DAY FROM DATA), 2, '0') || '/' ||
>                  LPAD(EXTRACT(MONTH FROM DATA), 2, '0') || '/' ||
>                  LPAD(EXTRACT(YEAR FROM DATA), 4, '0'));
>   -- Retorna o resultado.
>   SUSPEND;
> END^
> --
> COMMIT^
> --
> COMMENT ON PROCEDURE GLB_FORMATA_DATA IS 'Retorna a data formatada pela
> mascara "dd/mm/aaaa".'^
> COMMIT^
> --
> COMMENT ON PARAMETER GLB_FORMATA_DATA.DATA IS 'Data a ser formatada.'^
> COMMIT^
> --
> COMMENT ON PARAMETER GLB_FORMATA_DATA.RESULTADO IS 'String contendo a data
> formatada.'^
> COMMIT^
> --
> CREATE PROCEDURE GLB_FORMATA_DATAHORA(
>   DATAHORA TIMESTAMP)
> RETURNS(
>   RESULTADO VARCHAR(19))
> AS
> DECLARE VARIABLE INDICE INTEGER;
> BEGIN
>   IF (DATAHORA IS NULL) THEN
>     RESULTADO = NULL;
>   ELSE
>   BEGIN
>     RESULTADO = EXTRACT(SECOND FROM DATAHORA);
>     INDICE = POSITION('.' IN RESULTADO);
>     IF (INDICE > 0) THEN
>       RESULTADO = SUBSTRING(RESULTADO FROM 1 FOR(INDICE - 1));
>     RESULTADO = LPAD(EXTRACT(DAY FROM DATAHORA), 2, '0')||'/'||
>                 LPAD(EXTRACT(MONTH FROM DATAHORA), 2, '0')||'/'||
>                 LPAD(EXTRACT(YEAR FROM DATAHORA), 4, '0')||' '||
>                 LPAD(EXTRACT(HOUR FROM DATAHORA), 2, '0')||':'||
>                 LPAD(EXTRACT(MINUTE FROM DATAHORA), 2, '0')||':'||
>                 LPAD(RESULTADO, 2, '0');
>   END -- ELSE
>   SUSPEND;
> END^
> --
> COMMIT^
> --
> COMMENT ON PROCEDURE GLB_FORMATA_DATAHORA IS 'Retorna a data/hora formatada
> pela mascara "dd/mm/aaaa hh:mi:ss".'^
> COMMIT^
> --
> COMMENT ON PARAMETER GLB_FORMATA_DATAHORA.DATAHORA IS 'Data/hora a ser
> formatada.'^
> COMMIT^
> --
> COMMENT ON PARAMETER GLB_FORMATA_DATAHORA.RESULTADO IS 'String contendo a
> data/hora formatada.'^
> COMMIT^
> --
> SET TERM ; ^
>
> Sempre que preciso obter um campo data (timestamp) formatado, eu faço algo
> do tipo:
>
> SELECT (SELECT RESULTADO FROM GLB_FORMATA_DATA(CAMPO_DATA))CAMPO_DATA, ....
>
> No caso de data e hora, eu faço algo do tipo:
>
> SELECT (SELECT RESULTADO FROM
> GLB_FORMATA_DATAHORA(CAMPO_DATAHORA))CAMPO_DATAHORA, ....
>
> Ou seja, já fica tudo tratado no banco de dados.
>
> Espero ter ajudado mais que atrapalhado. :D
>
>
>
> Em 24 de abril de 2013 10:51, Mário Reis <mariodosreyx em gmail.com>
> escreveu:
>
> > Olá pessoal
> >
> >
> >
> > Há alguma forma de formatar a data do nosso Banco de Dados
> FIREBIRD-2.5.1?
> >
> > Qualquer coisa como SET DATE FORMAT TO YYYY-MM-DD?
> >
> > Estive a ver na documentação e não encontro nada.
> >
> > Também dei uma grande volta pela NET, e encontrei para outras databases,
> > para n/ Firebird nada!?!
> >
> > E, isto dava um grande jeito porque salvo melhor opinião, deixaria de
> > importar que formato usamos no Windows! Certo?
> >
> > Alguém pode ajudar?
> >
> > Obrigado
> >
> > Mário Reis
> >
> >
> > ______________________________________________
> > 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
> >
> ______________________________________________
> 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