Добавить к дате переменный интервал

Изображение msi

Столкнулся с необходимостью добавить к дате интервал, представляющий собой выражение (например, значение некоторого столбца). Проблему можно проиллюстрировать следующим псевдокодом:

SELECT current_timestamp + (2*2 day)

С константами проблем нет:

SELECT current_timestamp + interval '4 day'

Напрягало то, что использование выражений допустимо в аналогичных решениях SQL Server (функция DATEADD, см. пример 7.1.1) и более близких к стандарту MySQL:

SELECT current_timestamp +  interval 2*2 day

Поизвращавшись, нашел такое решение:

SELECT current_timestamp + (cast(2*2 AS varchar) || ' day')::interval

Т.е. сначала формируем строку, представляющее собой описание интервала, а затем конвертим ее к типу interval.
Хотелось бы узнать, существует ли более простой способ?
Просьба поделиться в комментах альтернативными решениями.

Комментарии

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Мне вот интересно, когда

Мне вот интересно, когда народ научится документацию читать? Всё же написано, чего мудрить - не понимаю:
http://postgresql.ru.net/manual/functions-datetime.html

откуда берём решение:

SELECT current_timestamp + 2 * interval '2 day';

Шпынять меня не

Изображение msi

Шпынять меня не нужно.
Документацию я, естественно, читал.
Но когда находишься в плену стереотипов другой СУБД, зачастую не замечаешь простого решения.

X * interval

 SELECT now() + X * interval '1 sec'
где X - число секунд

Я нашёл отлично расписанный

Я нашёл отлично расписанный пример с ссылками:

http://urvanov.ru/2015/07/03/%D0%B4%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%...

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023