PostgreSQL current_timestamp() 函数使用指南

PostgreSQL current_timestamp() 函数返回当前的日期和时间(所属事务开始的时间)。

current_timestamp() 语法

这是 PostgreSQL current_timestamp() 函数的语法:

current_timestamp -> TIMESTAMP WITH TIME ZONE

或者

current_timestamp(precision) -> TIMESTAMP WITH TIME ZONE

参数

precision
必需的。 它是一个整数,指示了小数秒的位数。

返回值

PostgreSQL current_timestamp() 函数返回一个带有时区信息的日期和时间,它是该函数所属的事务开始的系统日期和时间。

也就是说同一个语句中的 current_timestamp() 函数返回值相同,这点与 clock_timestamp() 不同。

current_timestamp() 示例

本示例展示了如何使用 PostgreSQL current_timestamp() 函数获取当前的日期和时间。

SELECT current_timestamp;
       current_timestamp
-------------------------------
 2022-05-14 15:55:37.222601+03

或者使用如下语句来限制小数秒的位数:

SELECT
    current_timestamp(0),
    current_timestamp(1),
    current_timestamp(2),
    current_timestamp(3),
    current_timestamp(4),
    current_timestamp(5),
    current_timestamp(6);
current_timestamp | 2022-05-14 15:57:26+03
current_timestamp | 2022-05-14 15:57:25.5+03
current_timestamp | 2022-05-14 15:57:25.52+03
current_timestamp | 2022-05-14 15:57:25.518+03
current_timestamp | 2022-05-14 15:57:25.5176+03
current_timestamp | 2022-05-14 15:57:25.51761+03
current_timestamp | 2022-05-14 15:57:25.517606+03

current_timestamp() 函数返回的是所属的事务开始的时间,而不是函数执行时刻的时间。请看下面的示例:

SELECT
    current_timestamp,
    pg_sleep(1),
    current_timestamp;
-[ RECORD 1 ]-----+------------------------------
current_timestamp | 2022-05-14 15:59:08.628751+03
pg_sleep          |
current_timestamp | 2022-05-14 15:59:08.628751+03

这里,即使我们在两个 current_timestamp 函数使用了 pg_sleep(1) 将执行暂停了 1 秒,两个 current_timestamp 函数返回的时间仍然是相同的。