入站文件中有2个字符串列,两者都格式化为YYYYMMDD。
如果第1列是在2015年10月1日之后,则在第1列日期添加90天并在第2列中加载。数据需要作为YYYYMMDD字符串加载到系统中(因此将其转换回来)。
我试图设置一个Dervied Column模块来做这件事,但我没有多少运气。
这是我到目前为止所拥有的:
[Column 1] >= (DT_DATE)"2015-10-01" ? DATEADD("dd",90,[Column 1])
请帮忙。
答案 0 :(得分:0)
可能有一种更简单的方法可以做到这一点,但是由于您尝试使用派生列转换执行此操作,因此我就是这样做的。
使用派生列转换将column1转换为日期
使用派生列转换检查条件并更改值
使用派生列转换将其更改回字符串
这是将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)
创建示例文本文件
这是包
这是检查条件后的数据查看器
这是将数据转换回字符串后的数据查看器
所以我想最后,您可以将相应的列映射到目标。在这种情况下,“Column1As String”。现在,我想起来了,我应该使用更好的名字..但希望你能得到图片。