Postgres将参数添加到间隔语句

问题描述

我正在尝试在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;

Demo on DB Fiddle

,

您可以直接将整数添加到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;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...