[firebase-br] Problemas na conversão TimeStamp para Char
Sandro Souza
escovadordebits em gmail.com
Qui Jun 18 11:58:34 -03 2009
Bom dia/tarde Junior.
Grande Junior, aqui vai a minha humilde sugestão:
Precisaremos de uma stored procedure que retorne a posição de um caracter ou
substring dentro de uma string.
Como sugestão, forneço esse exemplo de código fonte que cria a stored
procedure FBSTRPOS que retorna a posição inicial de uma substring (SUBTEXTO)
dentro de outra string (TEXTO), onde o resultado zero indica que a substring
não foi encontrada, 1 indica que a substring foi encontrada a partir do
primeiro caracter do texto e assim por diante:
SET TERM ^ ;
CREATE OR ALTER PROCEDURE FBSTRPOS(
TEXTO VARCHAR(2048),
SUBTEXTO VARCHAR(2049)
)RETURNS(
POSICAO INTEGER
)AS
BEGIN
-- Inicializa o resultado.
POSICAO = 0;
-- Informou um texto e subtexto a serem processados?
-- O subtexto esta contido no texto?
IF ((TEXTO IS NOT NULL)AND
(SUBTEXTO IS NOT NULL)AND
(TEXTO LIKE ('%' || SUBTEXTO || '%'))) THEN
BEGIN
-- Reinicializa o resultado.
POSICAO = 1;
-- Transforma o subtexto em uma mascara de pesquisa.
SUBTEXTO = SUBTEXTO || '%';
-- Laco de pesquisa de subtexto.
WHILE ((NOT(TEXTO LIKE SUBTEXTO))) DO
BEGIN
-- Esta mais a frente.
POSICAO = POSICAO + 1;
-- Aumenta a mascara.
SUBTEXTO = '_' || SUBTEXTO;
END -- WHILE
END -- IF
-- Envia o resultado.
SUSPEND;
END^
SET TERM ; ^
Agora, onde é:
MYSQL = MYSQL || 'AND NFE_DTMOVIMENTO = ''' || CAST(IN_DATA_MOVI AS
CHAR(30)) || '''';
Passaria a ser:
DATAHORA = CAST(IN_DATA_MOVI AS VARCHAR(30));
MYSQL = MYSQL || 'AND(NFE_DTMOVIMENTO = ''' || SUBSTRING(DATAHORA FROM 1 FOR
(FBSTRPOS(DATAHORA, '.') - 1)) || '''';
Onde DATAHORA seria outra variável do tipo VARCHAR(30).
É apenas uma sugestão.
Espero ter ajudado mais que atrapalhado. :D
2009/6/18 Junior Miranda <jrmiran em gmail.com>
> Bom dia a todos
>
> tenho a seguinte data hora num campo da tabela 18/6/2009 08:54:32.(campo
> timestamp)
>
> quando faço a conversão
> MYSQL = MYSQL || ' AND NFE_DTMOVIMENTO = '''|| CAST(IN_DATA_MOVI AS
> CHAR(30)) || '''';
>
> O valor do campo passado como parâmetro fica 18/6/2009 08:54:32.0000
>
> Seria alguma coisa relacionada aos milisegundos ?
>
> O problemas é que 18/6/2009 08:54:32.0000 não é encontrado tabela que está
> 18/6/2009 08:54:32
>
> Como resolver ?
>
> Nesta sp uso o EXECUTE STATEMENT.
>
> []'s
> ______________________________________________
> 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