244 votes

Comment convertir un intervalle en nombre d'heures avec postgres ?

Disons que j'ai un intervalle comme

4 days 10:00:00

dans postgres. Comment puis-je convertir ce chiffre en nombre d'heures (106 dans ce cas) ? Existe-t-il une fonction ou dois-je mordre la balle et faire quelque chose comme

extract(days, my_interval) * 24 + extract(hours, my_interval)

9 votes

Remarque : si votre intervalle contient des mois ou des années, il n'y a pas de réponse définie quant au nombre d'heures, car le nombre de jours dans un mois ou une année varie. Faites donc attention à cela !

1 votes

@Teddy : Plus précisément, il y a multiple réponses définies ;)

-2voto

Juan Salvador Points 81

Je travaille avec PostgreSQL 11, et j'ai créé une fonction pour obtenir les heures entre deux horodatages différents.

create function analysis.calcHours(datetime1 timestamp, datetime2 timestamp)
    returns integer
    language plpgsql as $$
    declare
        diff interval;
    begin
        diff = datetime2 - datetime1;
        return (abs(extract(days from diff))*24 + abs(extract(hours from diff)))::integer;
    end; $$;

-4voto

Arunkumar Papena Points 157
         select date 'now()' - date '1955-12-15';

Voici une requête simple qui calcule le nombre total de jours.

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