PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Calculer la somme de la colonne de temps dans PostgreSql

Ce que vous voulez, n'est pas possible. Mais vous avez probablement mal compris le time taper :il représente un instant précis dans une journée. Cela n'a pas beaucoup de sens d'ajouter deux fois (ou plus). ex. '14:00' + '14:00' = '28:00' (mais il n'y a pas de 28ème heure dans une journée).

Ce que vous voulez probablement, c'est interval (qui représente des intervalles de temps ; des heures, des minutes ou même des années). sum() prend en charge interval arguments.

Si vous utilisez des intervalles, c'est aussi simple que cela :

SELECT sum(interval_col) FROM my_table;

Bien que, si vous vous en tenez à l'time type (mais vous n'avez aucune raison de le faire), vous pouvez le convertir en interval pour calculer avec :

SELECT sum(time_col::interval) FROM my_table;

Mais encore une fois, le résultat sera interval , car time les valeurs ne peuvent pas dépasser la 24e heure d'une journée.

Remarque :PostgreSQL fera même le cast pour vous, donc sum(time_col) devrait fonctionner aussi, mais le résultat est interval dans ce cas aussi.