Skip to content

Time travel support #2006

@westonpace

Description

@westonpace

Several databases and data lakes support time travel which allows historical versions of a table to be queried. Regrettably, syntax and capabilities do not seem to be terribly consistent across the various implementations.

Querying Historical Times

This option lets a database be queried as it existed at a certain point in time. (Question: Is this "last version prior to the given time"? or is it an error if no snapshot exists with that exact time?)

Databricks

SELECT * FROM people10m TIMESTAMP AS OF '2018-10-18T22:15:12.013Z';

Snowflake

SELECT * FROM my_table AT(TIMESTAMP => 'Wed, 26 Jun 2024 09:20:00 -0700'::TIMESTAMP_LTZ);

Cockroach

SELECT * FROM t AS OF SYSTEM TIME '2016-06-15 12:45:00'

DuckLake

SELECT * FROM tbl AT (TIMESTAMP => now() - INTERVAL '1 week');

Querying Specific versions

This options lets a specific "version" of a database to be queried. What exactly this means seems to depend on the database implementation in question.

Databricks

SELECT * FROM people10m VERSION AS OF 123;

Snowflake

Note: unclear if this is the same thing (specific versions) or different

SELECT * FROM my_table BEFORE(STATEMENT => '8e5d0ca9-005e-44e6-b858-a8f5b37c5726');

Cockroach

Unsupported

DuckLake

SELECT * FROM tbl AT (VERSION => 3);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions