【问题标题】:Different timestamps for same sql query in Source Oracle Database and Target same Oracle Database while using Informatica使用 Informatica 时,源 Oracle 数据库和目标相同 Oracle 数据库中相同 sql 查询的不同时间戳
【发布时间】:2020-01-17 01:31:48
【问题描述】:

来源在我的表中有 Createddate 为 17-JAN-18 17.22.39.000000000。

当我执行以下查询时:

select CAST(Createddate AT TIME ZONE 'UTC' AS Timestamp) from Employee 

在 Oracle 数据库上,它给出了以下结果。

17-JAN-18 15.22.39.000000000

但是当我在源限定符(Informatica)中使用相同的 SQL 查询时,目标得到的结果低于同一 Oracle 数据库中的结果。

17-JAN-18 12.22.39.000000000 

我得到了 1 小时的时差。有人可以帮助我如何获得相同的时间戳吗?

【问题讨论】:

    标签: oracle oracle11g informatica-powercenter


    【解决方案1】:

    我假设您的 Createddate 值是 TIMESTAMP 值(没有 TIME ZONE)。

    当您运行 CAST(Createddate AT TIME ZONE 'UTC' AS Timestamp) 时,Oracle 实际上会这样做

    CAST(
       FROM_TZ(Createddate, SESSIONTIMEZONE) 
    AT TIME ZONE 'UTC' AS Timestamp)
    

    即它将当前会话时区附加到时间戳值,然后将其转换为新时区。

    因此,会话时区不同。最可靠的解决方案是明确设置时区,例如。 g.

    CAST(FROM_TZ(Createddate, 'Europe/Zurich') AT TIME ZONE 'UTC' AS Timestamp)
    

    顺便说一句,你的函数有一个快捷方式,只需使用like

    SYS_EXTRACT_UTC(FROM_TZ(Createddate, 'Europe/Zurich'))
    

    【讨论】:

    • 现在我得到了相同的结果,但两者都增加了 1 小时
    • 芬兰的 sessiontimezone('Europe/Zurich' 值)是多少?
    • 可能是Europe/Helsinki?
    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多