DB2 到 Postgres 迁移:CURRENT_TIMESTAMP

问题描述 投票:0回答:1

我正在尝试将 IBM DB2 查询重写为 PostgreSQL。

根据 DB2 UDB TO POSTGRESQL CONVERSION GUIDE DB2 函数 CURRENT_TIMESTAMP 可以迁移到 Postgres 函数 CURRENT_TIMESTAMP。我觉得事情没那么简单

根据这个问题文档

PostgreSQL 提供了许多返回与当前日期和时间相关的值的函数。这些 SQL 标准函数都基于当前事务的开始时间返回值

换句话说,如果事务中存在多个将属性值设置为 CURRENT_TIMESTAMP 的插入或更新语句,则该时间戳对于所有行都将完全相同。此行为与 DB2 不同:DB2 在每个语句中使用实际时间戳。

所以我遇到了 Postgres 函数 clock_timestamp() 和 statements_timestamp()

我认为函数statement_timestamp()是替代DB2中的CURRENT_TIMESTAMP的正确函数。但是,我找不到任何文档可以证实我的假设。我想确保用 statements_timestamp() 替换所有 CURRENT_TIMESTAMP 时没有副作用 - 有人可以确认这一点吗?

postgresql db2
1个回答
0
投票

摘自手册

PostgreSQL 还提供了返回开始时间的函数 当前语句,以及当前的实际时间 该函数被调用。

以及 SQL 测试:

BEGIN;
    SELECT clock_timestamp();
    SELECT pg_sleep(1);
    SELECT clock_timestamp();
COMMIT;
© www.soinside.com 2019 - 2024. All rights reserved.