【发布时间】:2018-05-18 18:42:02
【问题描述】:
我在 AS400 表中有一个字段,它是一个数字(十进制 8)字段。其中,日期以YYYYMMDD 格式存储,例如20180518。
然后我在 MS SQL Server 中有一个阶段表,我在处理之前将这些数据转储到该表中。目标列的类型为 Date。
我无法让 SSIS 包相应地传递值。我们尝试做的是将数字字段拆分为字符串,然后抓取子字符串。然后连接这些部分以组装一个 MM/DD/YYYY 格式的字符串。
substring(myfield,5,2) || '-' || substring(myfield,7,2) || '-' || substring(myfield,1,4)
我们还尝试在 AS400 上使用 Date() 函数..
Date(substring(myfield,1,4) || '-' || substring(myfield,5,2) || '-' || substring(myfield,7,2))
由于这些选项都不起作用,然后我尝试使用 SSIS 转换工具来执行任务。我将查询改回,只将字段拉入,然后将其传递给数据转换工具。在该工具中,它首先将列视为小数。
[Input Column][Output Alias][Data Type]
[myfield ][AliasMyField][decimal[DT_DECIMAL]]
然后我把它改成了
[Input Column][Output Alias][Data Type]
[myfield ][AliasMyField][date[DT_DATE]]
似乎无论我们尝试哪个途径包都不会执行,我不断得到:
转换失败,因为数据值溢出了指定的类型。
【问题讨论】:
标签: sql-server ssis db2-400