PostgreSQL CLOCK_TIMESTAMP() Date/Time Function


PostgreSQL CLOCK_TIMESTAMP() Date/Time Function

The PostgreSQL CLOCK_TIMESTAMP() function is used to get the current date and time with time zone, and it changes during the execution of the statement. This function is essential for capturing the exact time at various points within a query or transaction.


Syntax

CLOCK_TIMESTAMP()

The CLOCK_TIMESTAMP() function does not take any arguments and returns a timestamp with time zone representing the current date and time.


Example PostgreSQL CLOCK_TIMESTAMP() Queries

Let's look at some examples of PostgreSQL CLOCK_TIMESTAMP() function queries:

1. Basic CLOCK_TIMESTAMP() Example

SELECT CLOCK_TIMESTAMP() AS current_time;

This query retrieves the current date and time with time zone at the moment of execution.

2. CLOCK_TIMESTAMP() Within a Transaction

BEGIN;
SELECT CLOCK_TIMESTAMP() AS start_time;
-- Simulate some processing with a delay
SELECT pg_sleep(1);
SELECT CLOCK_TIMESTAMP() AS end_time;
COMMIT;

This sequence demonstrates the use of CLOCK_TIMESTAMP() within a transaction, showing that the timestamp changes between the two queries even within the same transaction.

3. CLOCK_TIMESTAMP() with Column Values

SELECT id, name, CLOCK_TIMESTAMP() AS query_time
FROM people;

This query retrieves the id, name, and the current date and time for each row in the people table, capturing the exact time of query execution for each row.


Full Example

Let's go through a complete example that includes creating a table, inserting data, and using the CLOCK_TIMESTAMP() function to capture the current date and time at various points within a query.

Step 1: Creating a Table

This step involves creating a new table named people to store people's data.

CREATE TABLE people (
    id SERIAL PRIMARY KEY,
    name TEXT
);

In this example, we create a table named people with columns for id and name.

Step 2: Inserting Data into the Table

This step involves inserting some sample data into the people table.

INSERT INTO people (name)
VALUES ('Alice'),
       ('Bob'),
       ('Charlie');

Here, we insert data into the people table.

Step 3: Using the CLOCK_TIMESTAMP() Function

This step involves using the CLOCK_TIMESTAMP() function to capture the current date and time during the execution of queries.

Retrieve current time:

SELECT CLOCK_TIMESTAMP() AS current_time;

This query retrieves the current date and time at the moment of execution.

Use CLOCK_TIMESTAMP() within a transaction:

BEGIN;
SELECT CLOCK_TIMESTAMP() AS start_time;
-- Simulate some processing with a delay
SELECT pg_sleep(1);
SELECT CLOCK_TIMESTAMP() AS end_time;
COMMIT;

This sequence demonstrates the use of CLOCK_TIMESTAMP() within a transaction, showing that the timestamp changes between the two queries even within the same transaction.

Capture current time with column values:

SELECT id, name, CLOCK_TIMESTAMP() AS query_time
FROM people;

This query captures the current date and time for each row in the people table at the moment of execution.


Conclusion

The PostgreSQL CLOCK_TIMESTAMP() function is a fundamental tool for capturing the exact current date and time with time zone during query execution. Understanding how to use the CLOCK_TIMESTAMP() function and its syntax is essential for accurate time-based calculations and tracking in PostgreSQL databases.