Как добавить переменное количество часов в дату в PostgreSQL?

Видно, PostgreSQL не имеет DATEADD, потому что вы можете просто использовать операторы + или -.

Мне нужно добавить несколько часов к дате, которая выполняется следующим образом:

date_field + interval '8.25 hour' 

Это здорово, но мне нужно количество часов, которые можно найти в поле в таблице. Было бы примерно так:

date_field + interval start_time 'hour' 

Я не могу найти нигде, как это сделать. Это действительно невозможно?

Я не против прибегать к уродливым взломам, например, принимать значение поля и делить на 3600, умножая на 86400. Что бы мне ни делал, но я тоже не нашел никакого способа сделать это.

Ответы

Ответ 1

Поскольку вы хотите добавить часы, это должно быть:

SELECT date_field + interval '1h' * start_time

start_time может быть любым численным значением.

Ответ 2

Нашел ответ в другом вопросе SO:

date + interval '1' minute * FLOOR(start_time * 60)

Надеюсь, что кто-нибудь поможет

Ответ 3

Тот, который работал у меня,

SELECT date_field + interval '1' HOUR * start_time

start_time может быть любым числовым значением.

Ответ 4

Если кто-то хочет добавить отметку времени, то

select time '05:00' - interval '2 hours'