Я очень новичок в PostgreSQL и, кажется, столкнулся с кажущейся простой проблемой. Я удивлен, что никто не подумал изложить это в коротком руководстве. Я пытаюсь создать ограничение, которое гарантирует, что продолжительность между двумя значениями меток времени (с часовым поясом) никогда не будет меньше 1 часа. Я видел примеры, сравнивающие временной диапазон с «бесконечностью», но ни один из которых не сравнивается с фактической временной продолжительностью, например «1 час» или «36 минут».
Мне кажется, я нашел ответ на свой первоначальный вопрос, который должен работать большую часть года, за исключением случаев, когда часы настроены на летнее время. Это выглядит так:
ADD CONSTRAINT duration_atleast_1hour CHECK ((start_datetime - end_datetime)> = '01: 00: 00 ':: interval)
Я думаю, что tstzrange () сможет обнаружить (из изменения часового пояса), что даже когда часы идут назад, временной интервал все еще увеличивается. Как использовать tstzrange () для проверки ограничений выше, поскольку я не могу напрямую сравнить его с типом данных Interval?