Вчерашняя дата в настройке пакета SSIS в переменной через выражение

Я устанавливаю переменную в пакете SSIS и использую это выражение:

DATEPART("yyyy", GETDATE())*10000 
        + DATEPART("month", GETDATE())*100  
        + DATEPART("day",GETDATE())

Выражение даст мне значение переменной, например «ггггммдд». Моя проблема в том, что я хочу вчерашнюю дату.

Например, 01.11.2014 должно быть 20141031.


person Mytroy2050    schedule 08.11.2014    source источник


Ответы (5)


Вы можете использовать функцию DATEADD, ваше выражение будет:

DATEPART("yyyy", DATEADD( "day",-1, GETDATE()))*10000 + DATEPART("month",  DATEADD( "day",-1, GETDATE())) * 100 + DATEPART("day", DATEADD( "day",-1, GETDATE()))
person Rangani    schedule 10.11.2014

Это даст вчерашнюю дату

(DT_WSTR, 4) YEAR(DATEADD("day",-1,GETDATE())) +RIGHT("0" + (DT_WSTR, 2) DATEPART("MM", DATEADD("day", -1, GETDATE())),2) +RIGHT("0" + (DT_WSTR, 2) DATEPART("DD", DATEADD("day", -1, GETDATE())),2)

person Saju    schedule 06.07.2016

меньше кода...

CONVERT(varchar(8), DATEADD(dd,-1,GETDATE()),112)
person Kent Howerter    schedule 23.05.2016
comment
Это не работает в выражении - по крайней мере, не в версии 10 (Visual Studio 2008). - person Filburt; 24.08.2016

В следующем примере указана вчерашняя дата с часами и минутами: 2015-09-06-14-40.

(DT_WSTR, 4) Year(dateadd("day",-1,getdate())) +  "-" 
+ ( month(dateadd("day",-1,getdate())) < 10 ? "0" + (DT_WSTR, 4) month(dateadd("day",-1,getdate())):(DT_WSTR, 4) month(dateadd("day",-1,getdate()))) 
+ "-" +( day(dateadd("day",-1,getdate())) <10 ? "0" + (DT_WSTR, 4) day(dateadd("day",-1,getdate())):(DT_WSTR, 4) day(dateadd("day",-1,getdate()))) 
+ "-" + right("0"+(DT_WSTR,4)datepart("hh",getdate()),2) 
+ "-" + right("0"+(DT_WSTR,4)datepart("mi",getdate()),2)
person Tatjana Zimmermann    schedule 07.09.2015

(DT_WSTR, 4) YEAR(GETDATE()) +RIGHT("0" + (DT_WSTR, 2) MONTH(GETDATE()),2) +RIGHT("0" + (DT_WSTR, 2) DATEPART("DD", DATEADD("day", -1, GETDATE())),2)

Выше также будет указана дата за день до этого. Основная проблема при выполнении плюса или минуса дает ошибку усечения в выражении.

RIGHT("0" + (DT_WSTR, 2) DATEPART("DD", DATEADD("day", -1, GETDATE())),2) 

не нарушит выражение.

person Qaiser Qaiser    schedule 06.07.2017