Как сложить текстовый столбец - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть таблица, которая имеет 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.

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Вам даже не нужен 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

0 голосов
/ 25 сентября 2018

demo: db <> fiddle

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() агрегат суммирует все значения времени.

0 голосов
/ 25 сентября 2018

Я полагаю, что использование следующего должно работать

select sum(third_column::time) from data

Демоверсия dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...