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

时间:2020-03-06 15:02:59  来源:igfitidea点击:

为什么这样不起作用(当参数设置为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传递。 IE:

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

试试这个,告诉我们是否有效

高温超导