派生列编辑器

Rob*_*man 2 ssis

我需要将格式化日期分配给数据流中的列.我添加了一个派生形状,并为新列输入了以下表达式 - 派生列="添加为新列":

"BBD" + SUBSTRING((DT_WSTR,4)DATEADD("Day",30,GETDATE()),1,4) + 
SUBSTRING((DT_WSTR,2)DATEADD("Day",30,GETDATE()),6,2) + 
SUBSTRING((DT_WSTR,2)DATEADD("Day",30,GETDATE()),9,2)
Run Code Online (Sandbox Code Playgroud)

问题是派生列转换编辑器自动分配数据类型Unicode string[DT_WSTR]和长度"7".但是,字符串的长度为11,因此每次抛出以下异常:

[Best Before Date [112]] Error: The "component "Best Before Date" (112)" failed 
because truncation occurred, and the truncation row disposition on "output column
"Comments" (132)" specifies failure on truncation. A truncation error occurred 
on the specified object of the specified component.
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么编辑坚持7长度?我似乎无法改变这一点.

非常感谢,

抢.

Tod*_*mid 5

我无法理解为什么SSIS正在测量该列只导致七个字符的字段 - 但是为了强制它为它提供一个11个字符的列,请稍微修改你的表达式:

(DT_WSTR,11)( "BBD"+ SUBSTRING((DT_WSTR,4)DATEADD("Day",30,GETDATE()),1,4)+ SUBSTRING((DT_WSTR,2)DATEADD("Day",30, GETDATE()),6,2)+ SUBSTRING((DT_WSTR,2)DATEADD("Day",30,GETDATE()),9,2))