【问题标题】:SSIS For Loop Container with Date Variable带有日期变量的 SSIS For 循环容器
【发布时间】:2018-12-03 09:52:24
【问题描述】:
我想创建一个在 ODBC 上执行每日查询并写入输出文件的月度包。
更具体地说,查询必须首先在上个月的第一天 (e.g. '01/11/2018') 执行,然后在下一个 ('02/11/2018') 执行,直到上个月的最后一天 ('30/11/2018')。
日期变量当前保存为字符串,我还希望将一个具有 Oracle 日期格式的字符串变量插入到查询中。应该如何组织?有没有办法可以在表达式中使用字符串变量?
【问题讨论】:
标签:
date
for-loop
ssis
odbc
【解决方案1】:
将其分解如下:
- 声明变量以存储上个月的开始和结束日期,如下所示:
开始日期(日期时间) = (DT_DATE)((DT_WSTR,4)YEAR(DATEADD("MM",-1,GETDATE()))+"-"+RIGHT("0"+(DT_WSTR,2)MONTH(DATEADD("MM",-1,GETDATE())),2)+"-01")
end_date(datetime) = DATEADD("D", -(DAY(GETDATE())),GETDATE())
声明变量Counter(datetime)
如下创建For loop container:
- 数据流任务的其余部分应该在 For 循环容器中,这将创建输出文件。你可以在SQL中使用变量
Counter来参数化它
【解决方案2】:
事实上,我发现我想在循环中使用的只是日期的时段,所以我创建了两个额外的 int 变量,其中包含:
1) 月初一 (1)
2)当月的最后一天(28,30,31)
我在For Loop Expressions 使用了这两个变量并将索引转换为字符串,因此我可以将其添加到查询中。可能会有更好的方法,它会受到欢迎。