gpt4 book ai didi

postgresql - PostgreSQL now() 和 transaction_timestamp() 函数之间有区别吗?

转载 作者:行者123 更新时间:2023-11-29 14:27:53 24 4
gpt4 key购买 nike

the official documentation ,这两个函数具有相同的描述:

Current date and time (start of current transaction)

这两个功能之间有区别吗?如果没有,为什么两者都存在?谢谢。

最佳答案

nowtransaction_timestamp 等同于 SQL 标准 current_timestamp。都报告交易的开始时间。

在交易方面,有两个时间戳需要考虑。事务的开始和每个单独语句的执行时间。 从概念上讲,还有事务的结束时间,可以通过在最后、提交/回滚之前运行 select statement_timestamp() trx_end_timestamp 来获得。

如果您在 psql 中运行以下命令 [复制整行并粘贴到 psql shell]

BEGIN; SELECT PG_SLEEP(5); SELECT NOW(), CURRENT_TIMESTAMP, TRANSACTION_TIMESTAMP(), STATEMENT_TIMESTAMP(); COMMIT;

我得到了这个输出:

              now              |       current_timestamp       |     transaction_timestamp     |      statement_timestamp
-------------------------------+-------------------------------+-------------------------------+-------------------------------
2019-04-23 11:15:18.676855-04 | 2019-04-23 11:15:18.676855-04 | 2019-04-23 11:15:18.676855-04 | 2019-04-23 11:15:23.713275-04
(1 row)

可以清楚的看到NOWCURRENT_TIMESTAMPTRANSACTION_TIMESTAMP是等价的,STATEMENT_TIMESTAMP有5秒偏移,因为我们睡了 5 秒。

顺便说一句,CURRENT_TIMESTAMP 在 sql 标准中。其他的是特定于 postgresql 的,尽管其他数据库也可以实现它们

关于postgresql - PostgreSQL now() 和 transaction_timestamp() 函数之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com