Oracle DB:执行Oracle导出/导入时,将时间戳(CET/CEST)列转换为UTC



我的问题是我的Oracle DB具有时间戳(6)列(没有任何时间戳信息),但时间戳存储在CET/CEST(欧洲/柏林)中。

我们需要将时间戳更正为UTC(因为当时间从CEST转换为CET时,我们已经存在问题 - 例如28.10.2018)

我已经找到了以下如何通过更新脚本完成的方法:如何将时间戳列更新到oracle中的时区

中的时区

我们还打算从11到12迁移 - 我的问题是在转储Exp/imp(expdp/impdp)期间也可以完成它?

正确的转换将是:

 FROM_TZ(YOUR_COLUMN, 'Europe/Berlin')  AT TIME ZONE 'UTC'

这返回TIMESTAMP WITH TIME ZONE值。如果您喜欢获得TIMESTAMP,则可以使用

 SYS_EXTRACT_UTC(YOUR_COLUMN, 'Europe/Berlin')

但是,我不知道如何将其包括在进出口中。我认为您必须使用remap_data:

CREATE OR REPLACE PACKAGE Convert_Date AS       
    FUNCTION TO_UTC(ts IN TIMESTAMP) RETURN TIMESTAMP;
END Convert_Date;
/

CREATE OR REPLACE PACKAGE BODY Convert_Date AS
FUNCTION TO_UTC(ts IN TIMESTAMP) RETURN TIMESTAMP
BEGIN
    RETURN SYS_EXTRACT_UTC(ts, 'Europe/Berlin');    
END;
END Convert_Date;
/

然后使用此导入参数:

REMAP_DATA=[schema.]tablename.column_name:Convert_Date.TO_UTC

相关内容

  • 没有找到相关文章

最新更新