web-dev-qa-db-fra.com

comment convertir des minutes entières en intervalles dans postgres

J'essaye de convertir les minutes qui sont en entier en intervalle dans postgres 

Est-ce que leur fonction m'aidera à la convertir en intervalle ou devrais-je la diviser par 60 et obtenir le résultat final? 

20 minutes will be like 00:20:00 as result 
12
Abhijeet Gulve

Le moyen le plus rapide est avec 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)

Donc, il ressemble à ceci (comme suggéré par @Teddy)

SELECT make_interval(mins := 20);

ou,

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

Pour ne pas dire que ce soit le plus propre, si la vitesse n'est pas un problème, je préfère la méthode * @a_horse_with_no_name indiquée

SELECT 20 * '1 minute'::interval;
16
Evan Carroll

vous pouvez concatter cet entier avec ' 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

Mettre à jour :

Ou: interval '1' minute * n comme dit un_horse_with_no_name

3
Vao Tsun

Dans le cas où vous essayez d'insérer des données dans une colonne interval, vous pouvez utiliser des secondes entières et PostgreSQL ™ les convertira en un intervalle.

0
Edgar Ortega