在SSIS派生列中将DDMMYY转换为DD-MM-YY



在varchar数据类型中放置"-"时遇到问题。。需要的是在最后两位数字之后,我们需要放"-",然后再放在两位数字后面,以此类推。

输入字符串为-21220输出字符串-2-12-20

或者,

输入字符串-311220输出字符串-31-12-20

有人能帮我吗?

我会选择一个用于字符串操作的脚本组件,因为它更容易做,可读性更强。

1( 添加脚本组件作为转换

2( 在输入列下,检查您的日期列(我在下面的示例中称之为myDate(

3( 在输入和输出下,在输出0下,为新日期添加一列,称为下方的formattedDate

4( 在脚本中,修改Input0_ProcessInputRow方法。在分析字符串之前,请确保它不是null。然后在左边加一个"0",以确保我们总是有6的长度。分析日期元素并设置新列的值。

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (!Row.mydate_IsNull)
{
var paddedDate = Row.mydate.PadLeft(6, '0');
var day = paddedDate.Substring(0, 2);
var month = paddedDate.Substring(2, 2);
var year = paddedDate.Substring(4, 2);
Row.formattedDate = $"{day}-{month}-{year}";
}
}  

(DT_WSTR,2((DT_I4(LEFT(RIGHT("0"+@[用户::日期],6(,2(+"-"+SUBSTRING(右("0"+@[用户::日期],6(,3,2(+"-"+右(@[用户::日期],2(

最新更新