用于创建Weekly文件夹的SSIS表达式

时间:2016-10-18 06:46:31

标签: sql-server ssis

我在一周内在我的系统中手动创建了一个每周文件夹,文件将在此处移动。现在我们想要使用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
..
..

如何为此编写表达式/函数。

1 个答案:

答案 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

我希望这有帮助。
您也可以将所有变量合并为一个,但很难理解和显示。