我有一个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天。