Oracle 时间戳问题转换日期

Oracle timestamp issue to convert date

我被困在一个数据仓库任务中,我需要映射一个来源为 varchar2 数据类型的列,以及 TIMESTAMP (6) WITH TIME 中的一个目标ZONE 数据类型。

源中包含的数据格式:2019-08-20

我尝试使用此映射:

select to_char(TO_TIMESTAMP_TZ('2019-08-20',  'yyyy-mm-dd"T"hh:mi:sstzhtzm'),'yyyy-mm-dd hh:mi:ss AM tzh:tzm')  from dual;

实际上适用于 dual table.

但是当数据加载到目标中时,这是给定的输出:

12/1/9999 12:00:00.000000 AM +00:00

期望和预期的输出:

2019-08-20 12:00:00 AM +02:00

如果要插入 TIMESTAMP 列,为什么要 TO_CHAR?

只需插入:

select TO_TIMESTAMP_TZ('2019-08-20',  'yyyy-mm-dd"T"hh:mi:sstzhtzm') from dual;

由于您在 varchar2 中只有截止日期的精度可用,timestamp 的所有其他部分(小时、分钟、秒和秒的小数部分)都将为 0。 试试这个:

select TO_TIMESTAMP_TZ('2019-08-20',  'yyyy-mm-dd') from dual;

db<>fiddle demo

干杯!!