九月 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 文档:时间/日期函数和操作符