Sql server 使用逻辑运算符在SSIS包内执行字符串到日期的操作
入站文件上有两个字符串列,均为YYYYMMDD格式 如果第1列在2015年1月10日之后,则在第1列日期的基础上增加90天,并在第2列中加载。数据需要作为YYYYMMDD字符串加载到系统中(因此将其转换回) 我正试图建立一个Dervied列模块来实现这一点,但我运气不太好 以下是我目前掌握的情况:Sql server 使用逻辑运算符在SSIS包内执行字符串到日期的操作,sql-server,datetime,ssis,Sql Server,Datetime,Ssis,入站文件上有两个字符串列,均为YYYYMMDD格式 如果第1列在2015年1月10日之后,则在第1列日期的基础上增加90天,并在第2列中加载。数据需要作为YYYYMMDD字符串加载到系统中(因此将其转换回) 我正试图建立一个Dervied列模块来实现这一点,但我运气不太好 以下是我目前掌握的情况: [第1列]>=(DT_日期)“2015-10-01”?日期添加(“dd”,90,[第1列]) 请提供帮助。可能有一种更简单的方法来实现这一点,但由于您正在尝试使用派生列转换来实现这一点,所以我现在就是
[第1列]>=(DT_日期)“2015-10-01”?日期添加(“dd”,90,[第1列])
请提供帮助。可能有一种更简单的方法来实现这一点,但由于您正在尝试使用派生列转换来实现这一点,所以我现在就是这样做的
因此,我想在最后,您可以将适当的列映射到目的地。在本例中,“Column1As String”。现在我想起来了,我应该用更好的名字。。但希望您能理解这一点。可能有一种更简单的方法来实现这一点,但由于您正在尝试使用派生列转换来实现这一点,所以我现在就是这样做的
因此,我想在最后,您可以将适当的列映射到目的地。在本例中,“Column1As String”。现在我想起来了,我应该用更好的名字。。但希望你能了解情况。是“2015年10月1日当天或之后”还是“2015年10月1日之后”。你为什么用>=而不是>运气不好?请说得更具体些。如果您遇到错误,请发布它。如果您收到意外的输出,请发布它。我可以告诉您,如果
[Column 1]
是字符串而不是日期,则不能在其上使用DATEADD
,也不能将其与日期进行比较。当你遇到问题时,你需要把它分解成碎片。把你的表情分解成碎片。例如,添加一个派生列,其中只有DATEADD(“dd”,90,[column 1])
。它有用吗?如果不只是故障排除,直到你把它做好。是“2015年1月10日或之后”还是“2015年1月10日之后”。你为什么用>=而不是>运气不好?请说得更具体些。如果您遇到错误,请发布它。如果您收到意外的输出,请发布它。我可以告诉您,如果[Column 1]
是字符串而不是日期,则不能在其上使用DATEADD
,也不能将其与日期进行比较。当你遇到问题时,你需要把它分解成碎片。把你的表情分解成碎片。例如,添加一个派生列,其中只有DATEADD(“dd”,90,[column 1])
。它有用吗?如果不只是故障排除,直到你得到它的权利。
(DT_DATE)(SUBSTRING(column1, 1, 4) + "-" + SUBSTRING(column1, 5, 2) + "-" + SUBSTRING(column1, 7, 2))
Column1AsDate >= (DT_DATE)"2015-10-01" ? DATEADD("dd", 90, Column1AsDate) : Column1AsDate
(DT_WSTR, 4)DATEPART("yy", Column1AfterCondition) + RIGHT("0" + (DT_WSTR, 2)DATEPART("mm", Column1AfterCondition), 2) + RIGHT("0" + (DT_WSTR, 2)DATEPART("dd", Column1AfterCondition), 2)