2014-02-11 5 views
2

Как я могу получить дату прошлой пятницы с использованием выражения SSIS? Использование ниже выражения:SSIS Выражение для даты предыдущей пятницы

RIGHT("0" + (DT_WSTR, 2) MONTH(dateadd("d", -1, getdate())), 2) 
+ RIGHT("0" + (DT_WSTR, 2) DAY(dateadd("d", -1, getdate())), 2) 
+ RIGHT("1"+(DT_WSTR, 4) YEAR(dateadd("d", -1, getdate())),2)+ ".csv" 

Выход выше выражения 021014.csv

+1

Может быть, вы бы лучше, отступая и определения окончательного состояния. Быстрого вопроса о пожаре без раздумий не то, что этот сайт для – billinkc

+1

Извините, я закончил с моим пакетом ssis, но я делаю это динамически, используя varaibles. – user3203331

+1

Вы должны сделать некоторые исследования, прежде чем уволить какой-то вопрос. Для получения последней пятницы будет 7 дней с даты выхода на пятницу или вычесть из сегодняшнего дня ... – Maverick

ответ

3

это также может быть использован:

 @[User::Destination] + "_"+ (DT_WSTR,20) 
    (
    DATEPART("dw",GETDATE())==1? RIGHT("0"+(DT_WSTR,2)Month (DATEADD ("D", - 1  GETDATE())), 2) 
    + 
    RIGHT ("0"+(DT_WSTR,2)DAY(DATEADD("D",-1,GETDATE())),2) 
    + 
    RIGHT("1"+(DT_WSTR,4)YEAR(DATEADD("D",-1,GETDATE())),2) 
    : 
    DATEPART("dw",GETDATE())==2? RIGHT("0"+(DT_WSTR,2) Month(DATEADD("D",-1,GETDATE())),2) 
    + 
    RIGHT ("0"+(DT_WSTR,2)DAY(DATEADD("D",-2,GETDATE())),2) 
    + 
    RIGHT("1"+(DT_WSTR,4)YEAR(DATEADD("D",-1,GETDATE())),2) 
    : 
    DATEPART("dw",GETDATE())==3? RIGHT("0"+(DT_WSTR,2) >Month(DATEADD("D",-1,GETDATE())),2) 
    + 
    RIGHT ("0"+(DT_WSTR,2)DAY(DATEADD("D",-3,GETDATE())),2) 
    + 
    RIGHT("1"+(DT_WSTR,4)YEAR(DATEADD("D",-1,GETDATE())),2) 
    : 
    DATEPART("dw",GETDATE())==4? RIGHT("0"+(DT_WSTR,2) >Month(DATEADD("D",-1,GETDATE())),2) 
    + 
    RIGHT ("0"+(DT_WSTR,2)DAY(DATEADD("D",-4,GETDATE())),2) 
    + 
    RIGHT("1"+(DT_WSTR,4)YEAR(DATEADD("D",-1,GETDATE())),2) 
    : 
    DATEPART("dw",GETDATE())==5? RIGHT("0"+(DT_WSTR,2) >Month(DATEADD("D",-1,GETDATE())),2) 
    + 
    RIGHT ("0"+(DT_WSTR,2)DAY(DATEADD("D",-5,GETDATE())),2) 
    + 
    RIGHT("1"+(DT_WSTR,4)YEAR(DATEADD("D",-1,GETDATE())),2) 
    : 
    DATEPART("dw",GETDATE())==6? RIGHT("0"+(DT_WSTR,2)Month (DATEADD("D",-1,GETDATE())),2) 
     + 
    RIGHT ("0"+(DT_WSTR,2)DAY(DATEADD("D",-6,GETDATE())),2) 
     + 
     RIGHT("1"+(DT_WSTR,4)YEAR(DATEADD("D",-1,GETDATE())),2) 
     : 
     DATEPART("dw",GETDATE())==7? RIGHT("0"+(DT_WSTR,2) >Month(DATEADD(" D",-1, GETDATE() )),2) 
     + 
     RIGHT ("0"+(DT_WSTR,2)DAY(DATEADD("D",-7,GETDATE())),2) 
     + 
     RIGHT("1"+(DT_WSTR,4)YEAR(DATEADD("D",-1,GETDATE())),2) 
     : "") 
     +".csv" 
+1

Отформатируйте свой ответ, иначе люди видят только тонну мусора. –

+0

Своя сворачивая вы aweomome !! – user3203331

0

Это использование T-SQL, вам все равно нужно преобразовать для SSIS. Это скорее намек на ответ. Но он не мог вписаться в комментарий.

DECLARE @CurrentDate DATE = '02/15/2014' --Saturday 
--Returns Date for Friday that was last week. When current date is Saturday will return Friday that was 1 week ago. 
SELECT DATEADD(dd,-DATEPART(weekday,@CurrentDate)-1,@CurrentDate) --Output: 2014-02-07 
--Returns Date for most recent Friday. 
SELECT DATEADD(dd,-(DATEPART(weekday,@CurrentDate)%7+1),@CurrentDate) --Output: 2014-02-14 

SET @CurrentDate = '02/11/2014' --Tuesday 
SELECT DATEADD(dd,-DATEPART(weekday,@CurrentDate)-1,@CurrentDate) --Output: 2014-02-07 
SELECT DATEADD(dd,-(DATEPART(weekday,@CurrentDate)%7+1),@CurrentDate) --Output: 2014-02-07 

Вы должны выяснить, что ваше требование для получения в пятницу, это пятница последней полной недели, или только в прошлую пятницу, в то время как это текущая неделя или предыдущий.

+0

: Мне нужна пятница, это текущая неделя или предыдущая. Я хорош с запросом tsql, но я хочу сгенерировать с помощью varaibles. – user3203331

+0

В этом случае вам потребуется второе выражение 'SELECT DATEADD (dd, - (DATEPART (день недели, GETDATE())% 7 + 1), GETDATE())' просто замените 'GETDATE()' вашими переменными или вашими столбцами. –

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