微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Postgres将参数添加到间隔语句

如何解决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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。