我需要将格式化日期分配给数据流中的列.我添加了一个派生形状,并为新列输入了以下表达式 - 派生列="添加为新列":
"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长度?我似乎无法改变这一点.
非常感谢,
抢.
我无法理解为什么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))