Sql 如何使用ssis表达式选择上一个日期?
嗨,我有ssis包和下面的表达式 它为我提供了文件名的日期和时间Sql 如何使用ssis表达式选择上一个日期?,sql,ssis,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_
@[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"
也许最好使用
GETDATE()
然后你可以这样做负号:
DATEADD("day", -1, GETDATE())
请看这里:
如果我理解正确,您只是想知道如何获取前一天的日期,如果前一天的日期恰好是周末,那么就获取最后一个工作日 您的代码几乎完全正确,只需更改工作日常量 此代码将检查是否为星期一,如果为,则减去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")
去年:
(DT_WSTR,4)年(DATEADD(“yy”,-1,GETDATE())
上季度:
(DT_WSTR,1)DATEPART(“qq”,DATEADD(“qq”,-1,GETDATE()))