PostgreSQL - 在 select 语句间隔中引用变量值

PostgreSQL - Reference a variable value in select statement interval

我正在尝试计算变量中的值,然后使用该值进一步驱动间隔语句。

运行 在 PG 9.6 上。 如果从那时起我们可以使用,如果有添加的东西,我们可以得到 PG 13。

示例:

CREATE OR REPLACE FUNCTION public.demofunc(
    int,
    int,
    date)
    returns date
    LANGUAGE plpgsql AS $$
    DECLARE 
       diffvalue text;
       returndate date;    
    BEGIN
    diffvalue:= ( - );
    returndate := (SELECT  - INTERVAL 'diffvalue days');

    return returndate;
    END$$;

这是我想要实现的简化版本,要删除的天数间隔基于在函数中完成的计算。所以它不是简单的 A - B 但最终结果是

我似乎无法在 运行 select 语句之前获得解析“diffvalue”的函数。我试过使用 int 和 text 以及 varchar 和 concat 字符串。

很抱歉我可能遗漏了任何明显的东西,今天才开始。

如果您的 diffvalue 实际上是 integer,您可以使用 make_interval 函数根据该数字创建一个区间:

returndate :=  + make_interval(days => diffvalue);

如果diffvalue是可以表示小数天的小数,make_interval不能使用

在这种情况下,您可以将 1 天的间隔乘以该值:

returndate :=  + interval '1 day' * diffvalue;