Как преобразовать целые числа в интервал в postgres

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

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

20 minutes will be like 00:20:00 as result 

Ответ 1

Самый быстрый способ с make_interval

make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)

Так выглядит это (как предложено @Teddy)

SELECT make_interval(mins => 20);

или же,

SELECT make_interval(0,0,0,0,0,20);

Не сказать, что самый чистый, если скорость не проблема, я предпочитаю упомянутый метод * @a_horse_with_no_name

SELECT 20 * '1 minute'::interval;

Ответ 2

вы можете указать, что целое число с ' minutes':

t=# with i as (
  select 20::int n
)
select concat(n,' minutes')::interval 
from i;
  concat
----------
 00:20:00
(1 row)

Time: 1.220 ms

Обновление

Или: interval '1' minute * n как a_horse_with_no_name говорит

Ответ 3

В случае, если вы пытаетесь вставить данные в interval столбец, вы можете использовать целочисленные секунды, и PostgreSQL преобразует их в интервал.