PostgreSQL 教程: current_timestamp 函数

九月 18, 2023

PostgreSQL 的CURRENT_TIMESTAMP()函数返回带时区的当前日期和时间,即事务开始的时间。

语法

下面说明了 PostgreSQL 的CURRENT_TIMESTAMP()函数的语法:

CURRENT_TIMESTAMP(precision)

参数

PostgreSQL 的CURRENT_TIMESTAMP()函数接受一个可选参数。

1) precision

precision指定结果的秒数字段中秒数小数精度的位数。

如果省略precision参数,CURRENT_TIMESTAMP()函数将返回一个TIMESTAMP时区,其中包含可用的完整的秒数小数精度。

返回值

CURRENT_TIMESTAMP()函数返回 TIMESTAMP WITH TIME ZONE 类型的值,表示事务开始的日期和时间。

示例

以下示例展示了如何使用CURRENT_TIMESTAMP()函数获取当前日期和时间:

SELECT CURRENT_TIMESTAMP;

结果是:

              now
-------------------------------
 2017-08-15 21:05:15.723336+07
(1 row)

在内部,CURRENT_TIMESTAMP()是用NOW()函数实现的,因此列别名是NOW

NOW()函数一样,CURRENT_TIMESTAMP()函数可以用作时间戳列的默认值。

让我们看一下下面的例子。

首先,创建一个表,名为note,其中的created_at列是TIMESTAMP WITH TIME ZONE类型的列。

CREATE TABLE note(
    note_id serial PRIMARY KEY,
    message varchar(255) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

created_at列的默认值由CURRENT_TIMESTAMP()函数的结果提供。

其次,向note表中插入新行

INSERT INTO note(message)
VALUES('Testing current_timestamp function');

在此语句中,我们没有指定created_at列的值,因此,它默认为事务开始的时间戳。

第三步,使用以下查询验证插入是否正确执行:

SELECT
    *
FROM
    note;

下图说明了结果:

PostgreSQL CURRENT_TIMESTAMP example

正如您所看到的,created_at列的值由语句执行时的日期和时间填充。

备注

在 PostgreSQL 中,TRANSACTION_TIMESTAMP()函数相当于CURRENT_TIMESTAMP函数。但是,函数名称TRANSACTION_TIMESTAMP清楚地反映了函数返回的内容。

在本教程中,您学习了如何使用 PostgresQL 的CURRENT_TIME()函数,获取事务开始的日期和时间。