2014-11-22 4 views
3

Есть ли эквивалент этой команды T-SQL в PostgreSQL?эквивалент DATEADD в PostgreSQL

select dateadd(hh,duration_in_hours,start_date) as end_date 

я нашел только интервал ключевого слова с последующей строкой, но эта страшная конструкция возвращает синтаксическую ошибку:

select start_date + interval cast(duration_in_hours as varchar) || ' hours' 

Это позволяет только строковая константа после «интервала» ключевого слова. Я уверен, что в pgsql должна быть какая-то схожая функция, но я не могу ее найти.

+0

Верно, это то же самое. Я не мог найти его с помощью моих ключевых слов. – Hink

+0

На самом деле 'INTERVAL' является типом, поэтому вы можете использовать строку как таковую. Ваше заявление может быть переписано как 'select start_date + cast (duration_in_hours || 'hours' как INTERVAL)'; Я получил раздражен и завернул все это в простой функции: 'создать или заменить функцию DATEADD (дата, с плавающей точкой, Char) возвращает дату как \t $$ \t начать \t \t возвращение $ 1 + бросок ($ 2 ||» «| | $ 3 как интервал); \t end; \t $$ language plpgsql; '. Извините интервал. – Manngo

ответ

9

Вы можете сделать это следующим образом:

select start_date + (duration_in_hours * interval '1 hour') from your_table 

Смотреть это sample SQL Fiddle

0

Postgres не имеет date_add функцию или любой эквивалент - способ манипулировать датами с помощью оператора + с interval стоимость, как вы упомянули.

Смежные вопросы