Sql Postgres向interval语句添加参数

Sql Postgres向interval语句添加参数,sql,postgresql,datetime,sql-function,Sql,Postgresql,Datetime,Sql Function,我试图在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 plpgsq

我试图在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\u interval()


您可以直接向
日期
值添加一个整数,这将增加天数。因此,如果您使用当前日期,则不需要强制转换

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;
但我不明白为什么要对单个值使用集合返回函数。在这种情况下,标量SQL函数会更好:

CREATE OR REPLACE FUNCTION test_date(number integer)
  RETURNS date
AS
$body$
  select current_date + number;
$body$
language sql
stable;
CREATE OR REPLACE FUNCTION test_date(number integer)
  RETURNS date
AS
$body$
  select current_date + number;
$body$
language sql
stable;