使用逻辑运算符在SSIS包内执行字符串到日期操作

时间:2016-01-14 16:57:55

标签: sql-server datetime ssis

入站文件中有2个字符串列,两者都格式化为YYYYMMDD。

如果第1列是在2015年10月1日之后,则在第1列日期添加90天并在第2列中加载。数据需要作为YYYYMMDD字符串加载到系统中(因此将其转换回来)。

我试图设置一个Dervied Column模块来做这件事,但我没有多少运气。

这是我到目前为止所拥有的:

[Column 1] >= (DT_DATE)"2015-10-01" ? DATEADD("dd",90,[Column 1])

请帮忙。

1 个答案:

答案 0 :(得分:0)

可能有一种更简单的方法可以做到这一点,但是由于您尝试使用派生列转换执行此操作,因此我就是这样做的。

  1. 使用派生列转换将column1转换为日期

  2. 使用派生列转换检查条件并更改值

  3. 使用派生列转换将其更改回字符串

  4. 这是将YYYYMMDD字符串更改为日期的代码(我将其命名为Column1AsDate)

    (DT_DATE)(SUBSTRING(column1, 1, 4) + "-" + SUBSTRING(column1, 5, 2) + "-" + SUBSTRING(column1, 7, 2))
    

    这是检查条件的代码(现在使用早期transfor中的Column1AsDate,我将此列命名为Column1AfterCondition)

    Column1AsDate >= (DT_DATE)"2015-10-01" ? DATEADD("dd", 90, Column1AsDate) : Column1AsDate
    

    这是将其放回字符串的代码(使用早期转换中的Column1AfterCondition)

    (DT_WSTR, 4)DATEPART("yy", Column1AfterCondition) + RIGHT("0" + (DT_WSTR, 2)DATEPART("mm", Column1AfterCondition), 2) + RIGHT("0" + (DT_WSTR, 2)DATEPART("dd", Column1AfterCondition), 2)
    

    创建示例文本文件

    Sample file

    这是包

    Package

    这是检查条件后的数据查看器

    Data Viewer after condition

    这是将数据转换回字符串后的数据查看器

    Data Viewer at the end

    所以我想最后,您可以将相应的列映射到目标。在这种情况下,“Column1As String”。现在,我想起来了,我应该使用更好的名字..但希望你能得到图片。