Usando CURRENT_TIMESTAMP, operador aritmético e parâmetro com Firebird
-
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.
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