首页 > 解决方案 > oracle时间戳6转换为sql server datetime2错误

问题描述

我正在使用 SSIS 将一些 oracle 数据转换为 sql server。我找到了这样的 Oracle 日期时间戳6

26-DEC-82 12.00.00.000000000 AM

将导致 SSIS 中的转换失败

错误:年、月和日参数描述了不可表示的

我认为这是因为 ssis 不知道是 2082 还是 1982,所以不知道如何转换。如何将 oracle 日期转换为年份为 yyyy 的日期?

更新:尝试了 Hadi 提到的 to_char 函数。我可以看到现在是 2682 年(其中大部分)。我添加了一张图片,其中显示了 to_char 和 plate_date 和 sold_date 列的原始列。如您所见,大多数年份都是 26xx,但有两个例外是 18xx。有人可以解释吗?

在此处输入图像描述

标签: sql-serveroracledatetimessistimestamp

解决方案


在 SQL Server 中,数据类型“timestamp”与日期或时间无关。

Microsoft 已将其旧的“timestamp”数据类型重命名为“rowversion”,因为它只是一个 8 字节的数字,用于记录一系列“行更改”事件。

另一方面,Oracle 的“时间戳”确实是关于时间的,因为 Oracle 的“时间戳”扩展了它们的“日期”数据类型。更多在这里

不幸的是,SQL Server 仍将“时间戳”识别为有效的数据类型名称

所以,我怀疑你的错误信息可能与时间戳-时间戳同音词有关。


推荐阅读