Столкнулся с необходимостью добавить к дате интервал, представляющий собой выражение (например, значение некоторого столбца). Проблему можно проиллюстрировать следующим псевдокодом:
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
откуда берём решение:
Шпынять меня не
Шпынять меня не нужно.
Документацию я, естественно, читал.
Но когда находишься в плену стереотипов другой СУБД, зачастую не замечаешь простого решения.
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%...