#postgresql
#postgresql
Вопрос:
У меня есть два поля в таблице, подобные
Time1(varchar) Time2(varchar)
13:01:15 14:02:06
Как мне получить разницу во времени между этими двумя полями?
Комментарии:
1. Реальный вопрос в том, почему вы сохраняете значение времени в
varchar
столбце. Это должно быть сохранено в столбце с типомtime
2. На самом деле это разработано какой-то другой командой.
3. Я использую их базу данных только для создания отчетов
Ответ №1:
Вы можете привести значения к правильному значению времени, а затем просто вычесть их:
'14:02:06'::time - '13:01:15'::time
или
time_2::time - time_1::time
Результатом является интервал
Комментарии:
1. Мы предполагаем, что time_2 здесь всегда больше time_1. Возможно, стоит обновить запрос до
greatest(time_1::time, time_2::time) - least(time_1::time, time_2::time)
2. @Scoots: интервал может быть отрицательным
3. могу ли я использовать sum(time_2::time — time_1::time) в запросе group by.
4. Я думаю, это должно сработать, если вывод (time_2::time — time_1:: time ) имеет тип interval
5. @a_horse_with_no_name Поскольку OP хочет их суммировать, сочетание положительных и отрицательных интервалов будет пагубным. По общему признанию, оба наших комментария появились до того, как мы узнали об этом.