Postgresql 提供输入所处间隔的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

例如,此表如下所示:

  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