如何使用ssis表达式选择上一个日期?

时间:2013-07-05 05:03:39

标签: sql ssis

嗨,我有ssis包和以下表达式 这给了我今天文件名的日期和时间

@[User::FilePath]+ "Bloomberg_"+REPLACE((DT_STR, 20, 1252)
(DT_DBTIMESTAMP)@[System::StartTime], ":", "")+".xls"

\\public\\Bloomberg_Upload\\Bloomberg_2013-07-05 005738.xls

我需要在工作日之前获得一个像以前一样的日期:

\\public\\Bloomberg_Upload\\Bloomberg_2013-07-04 005738.xls

我该怎么做?

星期一 -

  

如果我在星期一执行我的包裹日期应该是星期五。

请指导我

我正在尝试这样 -

(DT_I4)DATEPART("weekday",@[System::StartTime]) ==2 ? 
Replace((DT_STR, 20, 1252)(DATEADD( "D", -3,@[System::StartTime])),":","-") + ".xls" :
Replace((DT_STR, 20, 1252)(DATEADD( "D", -1,@[System::StartTime])),":","-") + ".xls"

3 个答案:

答案 0 :(得分:0)

使用GETDATE()可能更好 然后你可以这样做减号:

DATEADD("day", -1, GETDATE())

另请看这里: DATEADD (SSIS Expression)

答案 1 :(得分:0)

如果我理解你正确,你只是想弄清楚如何获得前一天的日期,如果前一天的日期恰好是周末,那么就是最后一个工作日。

你的代码几乎没有用,你只需要改变你的工作日常数。

此代码将检查是否为星期一,如果是则减去3天,否则减去1。

@[User::FilePath]+"Bloomberg_"+((DT_I4)DATEPART("weekday",@[System::StartTime]) ==1 ? 
Replace((DT_STR, 20, 1252)(DATEADD( "D", -3,@[System::StartTime])),":","") + ".xls" :
Replace((DT_STR, 20, 1252)(DATEADD( "D", -1,@[System::StartTime])),":","") + ".xls")

答案 2 :(得分:0)

去年:

(DT_WSTR,4)YEAR(DATEADD(" YY", - 1,GETDATE()))

上一季度:

(DT_WSTR,1)DATEPART(" QQ",DATEADD(" QQ", - 1,GETDATE()))