You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Table Input步骤获取PostgreSQL当前时间而非PDI端时间

获取PostgreSQL数据库服务器本地时间的解决方案

在PDI的Table Input步骤中,你用CURRENT_TIMESTAMP、LOCALTIMESTAMP得到的是PDI服务器/客户端时区的时间,原因是PostgreSQL的这类时间函数默认基于当前会话时区返回结果,而PDI连接数据库时会将自身服务器的时区作为会话时区传入。要获取数据库服务器的本地时间,可通过以下两种方式解决:

方法一:在SQL中强制转换为数据库服务器时区

直接在SQL中指定使用数据库服务器的时区来转换时间,无需修改PDI连接配置:

-- 方式1:手动指定数据库服务器时区(示例为Asia/Shanghai)
TO_CHAR(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AT TIME ZONE 'Asia/Shanghai', 'YYYY/MM/DD HH24:MI:SS') AS p_db_time

-- 方式2:动态读取数据库当前时区设置,无需硬编码
TO_CHAR(CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AT TIME ZONE (SELECT current_setting('TIMEZONE')), 'YYYY/MM/DD HH24:MI:SS') AS p_db_time

方法二:修改PDI的PostgreSQL连接时区

调整PDI的数据库连接配置,让会话时区与数据库服务器时区一致:

  • 打开PDI的PostgreSQL连接配置,在连接参数中添加:serverTimezone=你的数据库时区(例如serverTimezone=Asia/Shanghai)
  • 或者直接在JDBC URL末尾追加参数:&timeZone=Asia/Shanghai

配置完成后,原有的CURRENT_TIMESTAMP、LOCALTIMESTAMP语句就能返回数据库服务器的本地时间。

内容的提问来源于stack exchange,提问作者Mahari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:15:32