Столкнулся с необходимостью добавить к дате интервал, представляющий собой выражение (например, значение некоторого столбца). Проблему можно проиллюстрировать следующим псевдокодом:
SELECT current_timestamp + (2*2 day)
С константами проблем нет:
SELECT current_timestamp + interval '4 day'
Напрягало то, что использование выражений допустимо в аналогичных решениях SQL Server (функция DATEADD, см. пример 7.1.1) и более близких к стандарту MySQL:
Вчера адаптировал решение одной задачи под PostgreSQL.
В частности, требовалось вычислить интервал времени в минутах между двумя датами.
В SQL Server это можно сделать, применив встроенную функцию DateDiff:
SELECT datediff (minute, '2011-10-07T23:43:00', '2011-10-08T01:23:00');
В PG я не нашел ничего лучше как представить разность между датами интервалом, извлечь из него число секунд, и, наконец, поделить на 60, чтобы выразить результат в минутах. Итого:
Реализованы упражнения обучающего этапа (SELECT) для нескольких СУБД, в том числе и для PostgreSQL.
Пока страница находится в режиме тестирования буду рад любым замечаниям.
Интерактивный учебник по SQL оснастился консолью для выполнения запросов к PostgreSQL.
Запросы можно адресовать к учебным базам данных, описание которых можно найти здесь.
Хотел написать комментарий к странице http://postgresql.ru.net/manual/sql-dropdomain.html, но почему-то не пускают.
Вот, собственно, что вызывает недоумение:
CASCADE
Automatically drop objects that depend on the domain (such as table columns).
и
This command conforms to the SQL standard