Usando CURRENT_TIMESTAMP, operador aritmético y parámetro con Firebird

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

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Por qué no funciona esto (cuando el parámetro se establece en 1):

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

Pero esto funciona:

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

Recibo un mensaje de error: " error de conversión de la cadena " 39723.991882951 " "

Estoy usando Firebird 2.1

EDIT:

Encontré la respuesta yo mismo con un poco de ayuda:

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

Funciona si el parámetro se da como valor flotante.

¿Fue útil?

Solución

¿Qué quieres hacer exactamente? Tal vez pueda ser más útil con más detalles.

  

SELECCIONAR * DE LA TABLA DONDE TIMESTAMPFIELD > (CURRENT_TIMESTAMP -?)

¿Cómo configura su parámetro en su código? ¿Qué idioma usas?

Si usa Delphi, entonces su parámetro debe pasarse como Float. Es decir:

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

Prueba esto y dinos si está funcionando

HTH

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top