【问题标题】:Convert DDMMYY to DD-MM-YY in SSIS Derived Column在 SSIS 派生列中将 DDMMYY 转换为 DD-MM-YY
【发布时间】:2020-07-18 06:37:21
【问题描述】:

在 varchar 数据类型中放置“-”时遇到问题。 .需要的是在最后两位数之后我们需要输入“-”,然后在两位数之后再次等等。

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

或者,

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

谁能帮我解决这个问题?

【问题讨论】:

    标签: ssis substring ssis-2012 derived-column ssis-2016


    【解决方案1】:

    我会使用脚本组件来进行字符串操作,因为它更容易操作并且更具可读性。

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

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

    3) 在 Inputs and Outputs 下的 Output 0 下,为新日期添加一列,在下面称为 formattedDate

    4) 在脚本中,修改 Input0_ProcessInputRow 方法。在解析字符串之前,请确保它不为空。然后在左边用“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}";
        }
    }  
    

    【讨论】:

      【解决方案2】:

      (DT_WSTR, 2)(DT_I4)LEFT(RIGHT("0" + @[User::date], 6), 2) + "-" + SUBSTRING(RIGHT("0" + @[User::date], 6), 3, 2) + "-" + RIGHT(@[User::date] , 2)

      【讨论】:

        猜你喜欢
        • 2012-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-25
        • 1970-01-01
        相关资源
        最近更新 更多