Postgresql 提供输入所处间隔的id的函数
我想创建一个函数,该函数将接收一个日期作为输入,并能够返回它所在的相应间隔的id 例如,此表如下所示:Postgresql 提供输入所处间隔的id的函数,postgresql,psql,Postgresql,Psql,我想创建一个函数,该函数将接收一个日期作为输入,并能够返回它所在的相应间隔的id 例如,此表如下所示: id | start | end -- +------------+------------ 1 | 2000-11-30 | 2001-02-19 2 | 2001-02-21 | 2001-06-04 3 | 2001-06-05 | 2001-07-13 4 | 2001-07-15 | 2001-11-29 如果我输入日期
id | start | end
-- +------------+------------
1 | 2000-11-30 | 2001-02-19
2 | 2001-02-21 | 2001-06-04
3 | 2001-06-05 | 2001-07-13
4 | 2001-07-15 | 2001-11-29
如果我输入日期'2001-04-17',我希望它返回id值2
我目前正在尝试此功能,但无法使其正常工作:
create or replace function getId(_date date) returns integer
as $$
declare
myId integer;
begin
set myId = (select id from myTable
where ((_date >= start) and (_date <= end)));
return myId;
end;
$$ language plpgsql
;
您可以直接返回id,而无需设置为myId。Andend是PostgreSQL关键字,因此应该在双引号中使用它
create or replace function getId(_date date) returns integer
as $$
begin
return (select id from myTable
where ((_date >= start) and (_date <= "end")));
end;
$$ language plpgsql
;
select getId('2001-04-17');
Output: 2