2013-07-05 2 views
1

привет у меня есть 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" 

ответ

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") 
0

Может быть, лучше использовать GETDATE() , а затем вы можете сделать минус, как это:

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

Также смотрите здесь: DATEADD (SSIS Expression)

Смежные вопросы