2008-10-02 6 views
4

Pourquoi pas ce travail (lorsque le paramètre est réglé sur 1):En utilisant CURRENT_TIMESTAMP, opérateur arithmétique et paramètre avec Firebird

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

Mais cela fonctionne:

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

Je reçois un message d'erreur: "conversion error from string "39723.991882951" "

J'utilise Firebird 2,1

EDIT:

J'ai trouvé la réponse moi-même avec un peu d'aide:

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

Works si le paramètre est donnée comme valeur flottante.

Répondre

2

Que voulez-vous faire exactement? Peut-être que je peux être plus utile avec plus de détails.

SELECT * FROM TABLE OÙ TIMESTAMPFIELD> (CURRENT_TIMESTAMP -)

Comment définissez-vous votre paramètre dans votre code? Quelle langue utilisez-vous?

Si vous utilisez Delphi, votre paramètre doit être transmis en tant que Float. À savoir:

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

Essayez et nous dire si cela fonctionne

HTH

+0

Il donnera « » 0,1" est pas une date valide et l'heure » – Harriv

+0

Pouvez-vous construire votre requête à l'exécution , en mettant la valeur directement dans la quesry au lieu d'utiliser un paramètre? – vIceBerg

+0

Bien sur, mais ce n'est pas joli :) – Harriv

Questions connexes