我试图计算变量中的一个值,然后使用该值进一步驱动区间语句。
在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;