Как я могу использовать функцию PERIOD Temporal Postgres / Postgres 9.2 на Heroku?

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

База данных:

Row # | start - end
Row 1 | 1:00 - 4:00
Row 2 | 3:00 - 6:00

Я хочу иметь возможность выбирать суммы времени между двумя определенными моментами времени или ГРУППУ ПО ИНТЕРВАЛУ, чтобы в возвращаемом наборе записей была одна строка для каждой суммы в течение заданного интервала, например:

SELECT length( (start, end) )  WHERE (start, end) INTERSECTS (2:00,4:00)

(в данном случае (начало, конец) - это ПЕРИОД, который является новым типом данных в Postgres Temporal и pg9.2)

который вернется

INTERVAL 3 HOURS

поскольку в строке 1 два часа между 2:00 - 4:00, а в строке 2 - один час в течение этого времени.

Кроме того, я хотел бы иметь возможность:

SELECT "lower bound of start", length( (start, end) )  GROUP BY INTERVAL 1 HOUR

которые я бы хотел вернуть:

1:00 | 1
2:00 | 1
3:00 | 2
4:00 | 2
5:00 | 1

который показывает одну строку для каждого часа в течение данного интервала и сумму времени в начале этого интервала

Я думаю, что для этого можно использовать тип PERIOD, который есть в Postgres Temporal и Postgres 9.2. Однако, насколько я могу судить, в настоящее время они недоступны на Heroku - Итак,

Как я могу включить такую ​​математику на Heroku?


person Tronathan    schedule 16.09.2012    source источник
comment
Не могу вам ответить, но, черт возьми, временное расширение очень плохо поддерживается и документировано, поскольку работа была использована для создания tsrange на стр. 9.2. Это означает, что в 9.1 оно даже не входило в официальные дополнения Postgres, поэтому я думаю, что у вас мало шансов, что вы сможете загрузить это расширение в Heroku.   -  person greg    schedule 16.09.2012
comment
Как говорит @greg, временное расширение является предшественником типов диапазонов, включенных в PostgreSQL 9.2. Я бы дождался 9.2, если возможно. Вы, вероятно, найдете ограничения исключения полезными при использовании столбцов диапазона.   -  person kgrittn    schedule 16.09.2012


Ответы (1)


Попробуйте запустить:

 heroku addons:add heroku-postgresql:dev --version=9.2

Это должно дать вам версию 9.2, в которой поддерживаются типы диапазонов. Поскольку сейчас это альфа-версия, мы будем благодарны за любые отзывы на [email protected].

person CraigKerstiens    schedule 27.09.2012