任何人都可以建议我,在 中查找时间字段总和的最简单方法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
你想要的,是不可能的。但您可能误解了该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在这种情况下。