1

这是我现在所拥有的(它不起作用):

CREATE FUNCTION DIFFERENCE_IN_MINUTES(start DATETIME, end DATETIME)
RETURNING ((start - end)::interval minute(8) to minute)::char(10)::int8;

我希望能够像这样使用它:where DIFFERENCE_IN_MINUTES(startTime, endTime) > 100例如。实现这一目标的正确方法是什么?我正在使用 Informix 11.70。

4

1 回答 1

1

显然,您已经发现了将值转换为 的困难,但我认为您的代码中的问题是语法上的。保留字的使用也可能使事情复杂化。INTERVALINTEGERSTARTEND

尝试这个:

CREATE FUNCTION DIFFERENCE_IN_MINUTES(a DATETIME YEAR TO SECOND,
                                      b DATETIME YEAR TO SECOND)
        RETURNING INT8;
    RETURN ((b - a)::INTERVAL MINUTE(8) TO MINUTE)::CHAR(10)::INT8;
END FUNCTION;

我测试了使用该函数作为谓词,它似乎工作正常。

于 2013-08-15T23:51:10.557 回答