Time travel

IMPORTANT : time travel n'est plus maintenu depuis la version 6.2. Il y a plusieurs raisons à cela : impact sur la performance, taille du stockage, et un fichier pg_time qui grossit jusqu'à une taille infinie dans une courte période de temps.

De nouvelles fonctionnalités, par exemple les déclencheurs (triggers), permettent un comportement identique celui de time travel, sans lourdeur particulière.

NoteTime travel est déconseillé
 

Le texte suivant est conservé jusqu'à ce qu'il soit ré-écrit dans le contexte des nouvelles techniques aux objectifs identiques. Des volontaires ? - thomas 12.01.98.

Postgres supporte la notion de time travel. Cette fonctionnalité permet à un utilisateur de lancer des requêtes portant sur des valeurs passées. Par exemple, trouver la population actuelle de Mariposa :
SELECT * FROM cities WHERE name = 'Mariposa';

+---------+------------+----------+
|name     | population | altitude |
+---------+------------+----------+
|Mariposa | 1320       | 1953     |
+---------+------------+----------+
Postgres trouvera automatiquement la version des enregistrements de Mariposa pour la date actuelle. On peut aussi donner une échelle de temps. Exemple, la population de Mariposa passée et présente :
SELECT name, population
    FROM cities['epoch', 'now']
    WHERE name = 'Mariposa';
où, "epoch" indique l'origine des temps de l'horloge système.

Note

Sur les systèmes UNIX, c'est toujours le 1 janvier 1970 à 00 h 00 GMT.

Si vous avez exécuté tous les exemples, la requête ci-dessus retourne :
+---------+------------+
|name     | population |
+---------+------------+
|Mariposa | 1200       |
+---------+------------+
|Mariposa | 1320       |
+---------+------------+

Le début par défaut de l'échelle de temps est la date la plus ancienne que le système peut représenter, et la plus récente est le temps présent; ainsi above time range peut être abrégé par ``[,]''