计算 PostgreSql 中时间列的总和

Alw*_*nny 2 postgresql sum

任何人都可以建议我,在 中查找时间字段总和的最简单方法POSTGRESQL。我刚刚找到解决方案,MYSQL但我需要该POSTGRESQL版本。

MYSQL/sf/ask/213846041/

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(timespent))) FROM myTable;
Run Code Online (Sandbox Code Playgroud)

演示数据

id   time 
1   1:23:23
2   4:00:23
3   9:23:23
Run Code Online (Sandbox Code Playgroud)

所需输出

14:47:09

poz*_*ozs 5

你想要的,是不可能的。但您可能误解了该time类型:它代表一天中的精确时间点。添加两次(或更多)次没有多大意义。f.ex. '14:00' + '14:00' = '28:00'(但一天没有28小时)。

您可能想要的是interval(代表时间间隔;小时、分钟甚至年)。sum()支持interval论点。

如果你使用间隔,那就这么简单:

SELECT sum(interval_col) FROM my_table;
Run Code Online (Sandbox Code Playgroud)

虽然,如果您坚持使用该time类型(但您没有理由这样做),您可以将其转换为interval使用它进行计算:

SELECT sum(time_col::interval) FROM my_table;
Run Code Online (Sandbox Code Playgroud)

但同样,结果将是interval,因为time值不能超过一天中的第 24 小时。

注意:PostgreSQL 甚至会为你做转换,所以sum(time_col)应该也可以工作,但结果也是interval在这种情况下。