我在一周内在我的系统中手动创建了一个每周文件夹,文件将在此处移动。现在我们想要使用SSIS自动执行此任务。
以下是9月份的文件夹结构
MY16 WE SEP 04 16
MY16 WE SEP 11 16
MY16 WE SEP 18 16
MY16 WE SEP 25 16
MY表示营销年,WE表示周。
现在我们需要为10月份的第2个月,第9个月,第16个月,第23个月,第30个月和未来几个月创建文件夹。
MY16 WE ICT 2 16
..
..
如何为此编写表达式/函数。
答案 0 :(得分:0)
假设考虑当天的日期并在一周的某一天结账,那么在一周结束时移动一天;
首先,您需要为一周中的某一天引入两个变量(@ [User :: DayOfWeek] int32)和month(@ [User :: VariableMonth] String),假设计算一周最后一天的月份和年份:
@ [用户:: DAYOFWEEK]
DATEPART( "dw", getdate() ) == 1 ? 6
: DATEPART( "dw", getdate() ) == 2 ? 5
: DATEPART( "dw", getdate() ) == 3 ? 4
: DATEPART( "dw", getdate() ) == 4 ? 3
: DATEPART( "dw", getdate() ) == 5 ? 2
: DATEPART( "dw", getdate() ) == 6 ? 1
: 0
@ [用户:: VariableMonth]
(MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 1 ? "JAN" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 2 ? "FEB" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 3 ? "Mar" :
MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 4 ? "APR" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 5 ? "MAY" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 6 ? "JUN" :
MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 7 ? "JUL" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 8 ? "AUG" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 9 ? "SEP" :
MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 10 ? "OCT" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 11 ? "NOV" : MONTH(DATEADD( "DD", @[User::DayOfWeek], getdate() )) == 12? "DEC":"")
你需要的表达方式:
"MY" + RIGHT((DT_WSTR,4) YEAR(DATEADD( "DD", @[User::DayOfWeek], getdate() )),2) + " WE " + @[User::VariableMonth] + " " +RIGHT( "0" + (DT_WSTR,2) DAY(DATEADD( "DD", @[User::DayOfWeek], getdate() ) ),2) + " " + RIGHT((DT_WSTR,4) YEAR(DATEADD( "DD", @[User::DayOfWeek], getdate() )),2)
使用getdate()
的结果 MY16 WE OCT 23 16
我希望这有帮助。
您也可以将所有变量合并为一个,但很难理解和显示。