2

嗨,我有 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"
4

3 回答 3

1

如果我对您的理解正确,您只是想弄清楚如何获取前一天的日期,如果前一天的日期恰好是周末,则获取最后一个工作日。

你的代码几乎是正确的,你只需要改变你的工作日常数。

此代码将检查是否是星期一,如果是则减去 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")
于 2014-06-12T09:20:11.227 回答
1

也许使用起来更好GETDATE() ,然后你可以像这样做减号:

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

也看看这里: DATEADD(SSIS 表达式)

于 2013-07-05T13:02:39.850 回答
0

去年:

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

上一季度:

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

于 2018-03-19T14:32:35.167 回答