Temporal databases aim to make our programming lives easier around time, by baking time itself into the engine. One major feature of temporal databases is the ability to query the database as of a particular point in time.

The SQL:2011 specification gives syntax for this:

SELECT... AS OF SYSTEM TIME

To facilitate this, the database itself maintains a transaction time (aka system time ) for each transaction, and it is always increasing so that the past is immutable. This allows you to query the database at any point on the transaction time axis, to see what the database looked like in a given point in history.

The transaction time of a database fact is the time when the fact is current in the database and may be retrieved — Glossary of Temporal Database Concepts

transaction time is the time at which the database sees incoming data. This gives an inherent audit log, maintaining an immutable history of database transactions.

Temporal databases may also offer the ability to get the history of entities, or to query using temporal predicates (i.e. find me all cases when a field was changed in a certain time span). They may also offer support for time-series investigations to help analyse out trends and to make predictions.

An example use-case of where as of may be useful is in financial services, where regulatory regimes demand that financial trades can be reconstructed to show how they were priced, based on the available market data at the time.

To develop this kind of trade-reconstruction functionality without temporal functionality such as as of , is surprisingly difficult to do. To get around this, data is often copied and put aside, with an increased operations management overhead.