问题描述
我正在尝试在postgres函数interval语句内添加参数。不确定如何添加...
就像这样:
CREATE OR REPLACE FUNCTION test_date(number integer)
RETURNS table (date_value date)
AS
$body$
BEGIN
RETURN QUERY (select (now() + interval '$1 days') ::date as column_value);
END;
$body$
language plpgsql;
解决方法
我想你想要
RETURN QUERY select (now() + number * interval '1 day') ::date as column_value;
表达式number * interval '1 day')
的间隔为number
天。
您还可以使用make_interval()
:
RETURN QUERY select (now() + make_interval(days := number))::date as column_value;
,
您可以直接将整数添加到date
值中,这将增加天数。因此,如果您使用current_date
,则无需强制转换。
CREATE OR REPLACE FUNCTION test_date(number integer)
RETURNS table (date_value date)
AS
$body$
BEGIN
RETURN QUERY select current_date + number;
END;
$body$
language plpgsql;
但是我不明白为什么您对单个值使用set-returning函数。在这种情况下,使用标量SQL函数会更好:
CREATE OR REPLACE FUNCTION test_date(number integer)
RETURNS date
AS
$body$
select current_date + number;
$body$
language sql
stable;