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



我试图计算变量中的一个值,然后使用该值进一步驱动区间语句。

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

示例:

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

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

我似乎无法获得解决";diffvalue";在运行select语句之前。我已经尝试过使用int和text以及varchar和concat字符串进行任何操作。

很抱歉我可能错过了什么,今天才开始。

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

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

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

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

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

最新更新