Usando CURRENT_TIMESTAMP, operador aritmético e parâmetro com Firebird

StackOverflow https://stackoverflow.com/questions/164516

  •  03-07-2019
  •  | 
  •  

Pergunta

Por que não faz este trabalho (quando o parâmetro é definido como 1):

SELECT * FROM TABLE WHERE TIMESTAMPFIELD > (CURRENT_TIMESTAMP - ?)

mas isso funciona:

SELECT * FROM TABLE WHERE TIMESTAMPFIELD > (CURRENT_TIMESTAMP - 1)

Eu recebo mensagem de erro: "conversion error from string "39723.991882951" "

Eu estou usando Firebird 2.1

EDIT:

Eu encontrei a resposta me com uma pequena ajuda:

SELECT * FROM TABLE WHERE TIMESTAMPFIELD > (CURRENT_TIMESTAMP - CAST(? as DECIMAL(18,9))

Works se o parâmetro é dado como valor float.

Foi útil?

Solução

O que você quer fazer exatamente? Talvez eu possa ser mais úteis com mais detalhes.

SELECT * FROM tabela onde timestampField> (CURRENT_TIMESTAMP -?)

Como você define o seu parâmetro no seu código? Qual a linguagem que você usa?

Se você usar Delphi, em seguida, seu parâmetro deve ser passado como Float. Ou seja:

MyQuery.ParamByName('delta').asFloat := 0.1;

Tente isso e nos dizer se ele está funcionando

HTH

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top