如何在SSIS中使用if else与平面文件连接表达式



我有一个SSIS,它从。csv文件中获取数据并插入sql表

现在我的文件名是

平面文件属性和连接字符串表达式为:

@[User::Directory] + @[User::Filename]+" "+(DT_STR,4,1252)DATEPART( "yyyy" , getdate() ) +"-"+ RIGHT("0" + (DT_STR,4,1252)DATEPART( "mm" , getdate() ), 2) +"-"+ RIGHT("0" + (DT_STR,4,1252)DATEPART( "dd" , DATEADD("day", -1, GETDATE()) ), 2) +".csv"

给我的文件名像:C:mytempdataACCTMVCHNG_CSV 2011-09-18.csv

这是昨天的文件名

但是当我在星期一运行这个包时,存在的文件仅用于星期五,名称将是ACCTMVCHNG_CSV 2011-09-16.csv

所以我想在这个表达式

中使用if else

例如如果今天是星期一那么取星期五的文件我的意思是为星期五创建文件路径

像这样:C:mytempdataACCTMVCHNG_CSV 2011-09-16.csv

如果我周二没理解错的话,您希望在周一创建文件。周三,您希望在周二创建该文件。但是在星期一,你不希望文件在星期天创建,而是在星期五创建。

@[User::Directory] + @[User::FileName]+" "+
(DT_STR,4,1252)DATEPART("yyyy", getdate() ) +"-"+ 
RIGHT("0" + (DT_STR,4,1252)DATEPART("mm", getdate() ), 2) +"-"+ 
RIGHT("0" + (DT_STR,4,1252)DATEPART("dd", 
    DATEADD("day", DATEPART("dw", GETDATE()) == 1 ? -3 : -1, GETDATE()) ), 2) +".csv"

试试这个表达式。它以一个条件扩展你的。它再次使用DATEPART函数和"dw"参数,该参数返回当前星期几的序数。玩这个。(在我的例子中,星期一是一周的第一天)如果今天是星期一,DATEADD函数增加-3天。

最新更新