【问题标题】:Oracle DB: Convert timestamp (CET/CEST) columns to UTC while doing Oracle export/importOracle DB:在执行 Oracle 导出/导入时将时间戳 (CET/CEST) 列转换为 UTC
【发布时间】:2019-07-22 06:02:55
【问题描述】:
【问题讨论】:
标签:
oracle
timestamp
utc
impdp
expdp
【解决方案1】:
正确的转换应该是这个:
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