Мне нужно вычислить продолжительность событий в postgres на основе start_time и end_time, оба в формате ЧЧ: ММ: СС. Просто end_time - start_time работает:
create table test_date as
select sum(eindtijd - starttijd) as tijdsduur
from evenementen_2019;
Это приводит к интервалу в формате ЧЧ: ММ: СС. Но иногда end_time на следующий день. Примеры:
start_time end_time duration computed
18:00 21:00 3:00 3:00
18:00 0:00 6:00 -18:00
18:00 1:00 7:00 -17:00
У меня есть только время без часовых поясов, без дат.
Решение концептуально просто: когда продолжительность <0, добавьте к ней 24 часа. Поэтому я попытался: </p>
update test_date
set duration = to_date('24:00:00', 'HHMMSS') - duration
where duration < 0 * interval '1' second;
Это приводит к ошибке:
ОШИБКА: столбец "duration" имеет тип интервал, но выражение имеет тип отметки времени без часового пояса
Это верно, и я подумал, что timestamp - interval
дает метку времени. Я в недоумении, как решить эту проблему. Кто-нибудь знает, как лучше решить эту проблему?