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

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

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

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

2 ответов


самый быстрый способ с 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;

вы можете объединить это целое число с ' 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 говорит