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

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

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

但这有效:

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

我收到错误消息:“字符串转换错误”39723.991882951“”

我正在使用Firebird 2.1

编辑:

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

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

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

最佳答案 你想做什么?也许我对更多细节更有帮助.

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

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

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

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

试试这个并告诉我们它是否有效

HTH

点赞