对于循环容器SSIS AssignExpression

时间:2018-08-17 17:40:52

标签: sql-server for-loop ssis etl

我的表格中有“开始日期”和“结束日期”列,我需要输入 值已使用了2年。我创建了一个for循环,并尝试加载以下值: 每个月。

例如,我的第一个输入开始日期是10/12/2016结束日期11/11/2016。它 应该增加一个月,然后插入表格2年。

用于循环容器

InitExpression: @windowStart="10/12/2016"

Evalexpression: @WindowStart<@windowMaxdate

AssignExpression: @windowStart= Dateadd("mm",1,@windowStart)

执行sql任务

SQL命令:

Insert into dbo.datetemp 
(WindowStart,WindowEnd ) values (?,?)

我的问题是我没有得到我所期望的价值及其公正 为每条记录返回相同的windowstartwindowend。而且循环不会停止。

enter image description here

2 个答案:

答案 0 :(得分:1)

我知道了解决方法。

我在执行sql任务后在for循环中添加了一个expression任务

@[User::WindowStart] = (DT_WSTR,24)(DT_DBTIMESTAMP) dateadd("mm",1, 
(@[User::WindowStart]) )

而不是在for循环编辑器的Assign表达式中添加此表达式。

答案 1 :(得分:0)

您正在将字符串值传递给@windowStart

创建一个日期时间类型为@StartDate的日期时间类型的变量2016-12-10。并使用以下表达式:

InitExpression: @windowStart= @StartDate

还要确保@windowStart@windowMaxdate的类型为DateTime

也请检查类似的问题以获取更多信息: