九月 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;
下图说明了结果:

正如您所看到的,created_at列的值由语句执行时的日期和时间填充。
备注
在 PostgreSQL 中,TRANSACTION_TIMESTAMP()函数相当于CURRENT_TIMESTAMP函数。但是,函数名称TRANSACTION_TIMESTAMP清楚地反映了函数返回的内容。
在本教程中,您学习了如何使用 PostgresQL 的CURRENT_TIME()函数,获取事务开始的日期和时间。
了解更多
PostgreSQL 教程:日期函数
PostgreSQL 文档:时间/日期函数和操作符