43 votes

PostgreSQL : formater l'intervalle en minutes

Lorsque je soustrait les horodatages, l'intervalle est sous la forme DD:HH:MM:SS. Comment puis-je convertir le tout en minutes sans extraire les jours et les heures et les multiplications/additions ? Je recherche une seule fonction que je peux remplacer par date_part dans cette requête afin qu'elle renvoie 65 :

 select date_part('minutes', '65 minutes'::interval);

Contexte : j'ai besoin de savoir combien de minutes se sont écoulées depuis l'horodatage donné.

77voto

Milen A. Radev Points 20462
SELECT EXTRACT(EPOCH FROM '2 months 3 days 12 hours 65 minutes'::INTERVAL)/60;

semble fonctionner.

ATTENTION : "semble" est le mot clé.

-3voto

Joshua D. Drake Points 667

En fait, je ne pense pas que vous puissiez le faire sans faire un tas de bizarreries (comme to_char) car les minutes passent à 59. C'est pourquoi vous obtenez :

 postgres=# select date_part('minutes', '65 minutes'::interval);
 date_part 
-----------
         5
(1 row)

postgres=# select '65 minutes'::interval
postgres-# ;
 interval 
----------
 01:05:00
(1 row)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X