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