Your Neon database now comes with a REST API out-of-the-box. 100% PostgREST-compatible, written in Rust
/Date Functions /CLOCK_TIMESTAMP

PostgreSQL CLOCK_TIMESTAMP() Function

Summary: in this tutorial, you will learn how to use the PostgreSQL CLOCK_TIMESTAMP() function to return the current date and time.

Introduction to the PostgreSQL CLOCK_TIMESTAMP() function

The CLOCK_TIMESTAMP() function returns the current date and time with a timezone.

Here’s the basic syntax of the CLOCK_TIMESTAMP() function:

CLOCK_TIMESTAMP()

The CLOCK_TIMESTAMP() function has no parameters.

The CLOCK_TIMESTAMP() function returns the current date and time as a timestamp with a timezone.

When you call the CLOCK_TIMESTAMP() function multiple times within a statement, you’ll get different results.

PostgreSQL CLOCK_TIMESTAMP() function examples

Let’s take some examples of using the CLOCK_TIMESTAMP() function.

1) Basic CLOCK_TIMESTAMP() function example

The following example uses the CLOCK_TIMESTAMP() function to obtain the current date and time:

SELECT CLOCK_TIMESTAMP();

Output:

clock_timestamp
-------------------------------
 2024年03月20日 14:49:07.875891-07
(1 row)

The result is a timestamp with a time zone.

2) Calling CLOCK_TIMESTAMP() function multiple times within a statement

The following example calls the CLOCK_TIMESTAMP() function multiple times within a statement:

SELECT
 clock_timestamp(),
 pg_sleep(3),
 clock_timestamp(),
 pg_sleep(3),
 clock_timestamp();

Output:

-[ RECORD 1 ]---+------------------------------
clock_timestamp | 2024-03-20 14:51:21.92144-07
pg_sleep |
clock_timestamp | 2024-03-20 14:51:24.924244-07
pg_sleep |
clock_timestamp | 2024-03-20 14:51:27.931263-07

The output shows that the CLOCK_TIMESTAMP() function returns the actual date and time between the calls within the same statement.

3) Using the CLOCK_TIMESTAMP() function to measure the execution time of a statement

First, define a new function called time_it to measure the execution time of a statement:

CREATE OR REPLACE FUNCTION time_it(
 p_statement TEXT
) RETURNS NUMERIC AS $$
DECLARE
 start_time TIMESTAMP WITH TIME ZONE;
 end_time TIMESTAMP WITH TIME ZONE;
 execution_time NUMERIC; -- ms
BEGIN
 -- Capture start time
 start_time := CLOCK_TIMESTAMP();

 -- Execute the statement
 EXECUTE p_statement;

 -- Capture end time
 end_time := CLOCK_TIMESTAMP();

 -- Calculate execution time in milliseconds
 execution_time := EXTRACT(EPOCH FROM end_time - start_time) * 1000;

 RETURN execution_time;
END;
$$ LANGUAGE plpgsql;

Second, use the time_it() function to measure the execution time of the statement that uses the pg_sleep() function:

SELECT time_it('SELECT pg_sleep(1)');

Output:

time_it
-------------
 1007.731000

It takes about 1008 ms or 1s to complete.

Summary

  • Use the CLOCK_TIMESTAMP() function to return the current date and time.

Last updated on

Was this page helpful?
Thank you for your feedback!

AltStyle によって変換されたページ (->オリジナル) /