使用CURRENT_TIMESTAMP,算术运算符和Firebird参数

时间:2008-10-02 20:48:04

标签: firebird

为什么这不起作用(当参数设置为1时):

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

但这有效:

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

我收到错误消息:"conversion error from string "39723.991882951" "

我正在使用Firebird 2.1

修改

我在一点帮助下找到了答案:

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

如果参数以浮点值给出,则有效。

1 个答案:

答案 0 :(得分:2)

你想做什么?也许我会对更多细节更有帮助。

  

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

如何在代码中设置参数?你用哪种语言?

如果您使用Delphi,那么您的参数应该作为Float传递。即:

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

试试这个并告诉我们它是否正常工作

HTH