функция для предоставления идентификатора интервала, в который вход находится между - PullRequest
1 голос
/ 02 августа 2020

Я хочу создать функцию, которая будет получать дату в качестве входных данных и иметь возможность возвращать идентификатор соответствующего интервала, в котором она находится.

Например, с этой таблицей здесь:

  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», я хочу, чтобы он возвращал значение идентификатора 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
;

1 Ответ

1 голос
/ 02 августа 2020

Вы можете вернуть id напрямую, не устанавливая myId. А end - это ключевое слово 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...