我有一个表,该表包含3列,即start_date,end_date和它们之间的差异。
开始列为“ 2018-09-25 10:00:00”,结束列为“ 2018-09-25 11:00:00”,另一个为文本列,其结果为“ 01” :00',但我需要对SQL查询中的结果求和,但这不起作用。我已经尝试过
select sum(to_timestamp(third_column)::time) as sum from my_table.
答案 0 :(得分:1)
您甚至不需要第3列,因为它还是从前2列衍生而来。
使用此示例数据:
WITH t(start_date, end_date) AS
(
SELECT TIMESTAMP'2018-09-25 10:00', TIMESTAMP'2018-09-25 11:00'
UNION ALL SELECT '2018-09-25 7:00', '2018-09-25 07:45'
)
以下查询将为您提供结束日期和开始日期之间的差值总和(以间隔为单位):
SELECT SUM(end_date - start_date) FROM t
结果以时间间隔01:45:00
答案 1 :(得分:1)
SELECT
SUM(to_timestamp(diff, 'HH24:MI')::time)
FROM times;
A:to_timestamp()
将文本转换为时间戳。第二个参数用于描述时间格式(HH24
是24小时格式的小时,MI
是分钟; https://www.postgresql.org/docs/current/static/functions-formatting.html)。时间戳包括日期部分。使用::time
强制转换可以将其截断。
B:SUM()
汇总所有时间值。
答案 2 :(得分:0)