Time Travel

После Postgres v6.2, time travel больше не поддерживается. Для этого было несколько причин: влияние на производительность, размер хранения, и файл pg_time, размер которого стремился к бесконечности за короткий промежуток времени.

Новые свойства, типа триггеров, позволяли при желании подражать поведению time travel, без добавления накладных расходов, когда это ненужно (для большинства пользователей, почти всё время). Дополнительную информацию ищи в каталоге с примерами contrib.

Time travel резко осуждается: Оставшийся текст в этом разделе сохранится до тех пор пока не будет переписан в контексте новой техники для выполнения тех же самых целей. Добровольцы? - thomas 1998-01-12

Postgres поддерживает такую идею как time travel. Это свойство позволяет пользователю выполнять исторические запросы. Например, найти текущее население города Mariposay:

SELECT * FROM cities WHERE name = 'Mariposa';

+---------+------------+----------+
|name     | population | altitude |
+---------+------------+----------+
|Mariposa | 1320       | 1953     |
+---------+------------+----------+
    
Postgres автоматически найдёт версию записи Mariposa, верную на текущий момент. Можно также задать временной диапазон. Например, посмотреть население Mariposa в прошлом и настоящем:
SELECT name, population
    FROM cities['epoch', 'now']
    WHERE name = 'Mariposa';
где "epoch" указывает на начало отсчёта системных часов.

Замечание: В системах Unix, это всегда полночь 1 января 1970 года по Гринвичу.

Если, несомненно, ты выполнял все примеры, то запросы выше возвратят:

+---------+------------+
|name     | population |
+---------+------------+
|Mariposa | 1200       |
+---------+------------+
|Mariposa | 1320       |
+---------+------------+
    

По умолчанию, начало временного диапазона - самое раннее время предоставленное системой и по умолчанию конец - текущее время; таким образом, приведённый выше временной диапазон может быть сокращён до ``[,].''