我正在使用SSIS将一些oracle数据转换为sql服务器。我发现这样的Oracle日期时间戳6
26-DEC-82 12.00.00.000000000 AM
将导致SSIS中的转换失败
错误:年,月和日参数描述了无法表示的情况
我认为这是因为ssis不知道是2082年还是1982年,所以不知道如何转换。我如何将oracle日期转换为yyyy呢?
更新:尝试了哈迪提到的to_char函数。我可以看到现在是2682年(其中大多数)。我添加了一张图片,其中显示了to_char和Plate_date和sold_date列的原始列。如您所见,大多数年份是26xx,两个例外是18xx。有人可以解释吗?
答案 0 :(得分:1)
在Oracle Source中,使用SQL命令使用TO_CHAR()
函数将TimeStamp转换为nvarchar,并使用通用数据格式yyyy-MM-dd HH:mm:ss
:
TO_CHAR(SOURCECOLUMN, 'YYYY-MM-DD HH24:MI:SS')
然后在SSIS数据流中添加具有以下表达式的派生列:
(DT_DATE)[SOURCECOLUMN]
或添加数据转换转换并将列转换为日期数据类型。
答案 1 :(得分:0)
在SQL Server中,数据类型“时间戳”与日期或时间无关。
Microsoft已将其旧的“时间戳”数据类型重命名为“ rowversion”,因为它只是一个8字节的数字,用于记录一系列“行更改”事件。
另一方面,Oracle的“时间戳”实际上是关于时间的,因为Oracle的“时间戳”扩展了其“日期”数据类型。 more here。
不幸的是,SQL Server仍将“时间戳”识别为有效的数据类型 名称 。
因此,我怀疑您的错误消息可能与timestamp-timestamp的谐音有关。