Utilizzando CURRENT_TIMESTAMP, operatore aritmetico e parametro con Firebird

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

  •  03-07-2019
  •  | 
  •  

Domanda

Perché non funziona (quando il parametro è impostato su 1):

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

Ma funziona:

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

Ricevo il messaggio di errore: " errore di conversione dalla stringa " 39723.991882951 " & Quot;

Sto usando Firebird 2.1

Modifica

Ho trovato la risposta da solo con un piccolo aiuto:

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

Funziona se il parametro è indicato come valore float.

È stato utile?

Soluzione

Cosa vuoi fare esattamente? Forse posso essere più utile con maggiori dettagli.

  

SELEZIONA * DALLA TABELLA DOVE TIMESTAMPFIELD > (CURRENT_TIMESTAMP -?)

Come si imposta il parametro nel codice? Quale lingua usi?

Se usi Delphi, il tuo parametro dovrebbe essere passato come Float. Vale a dire:

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

Prova questo e dicci se funziona

HTH

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top