5

我在SSIS包中设置一个变量,我正在使用这个表达式:

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

该表达式将为我提供一个变量值,例如“yyyymmdd”。我的问题是我想要昨天的约会。

例如在 2014 年 11 月 1 日,它应该是 20141031

4

5 回答 5

9

您可以使用DATEADD您的表达式的函数:

DATEPART("yyyy", DATEADD( "day",-1, GETDATE()))*10000 + DATEPART("month",  DATEADD( "day",-1, GETDATE())) * 100 + DATEPART("day", DATEADD( "day",-1, GETDATE()))
于 2014-11-10T10:46:18.287 回答
5

这将给出昨天的日期

(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)

于 2016-07-06T15:54:54.600 回答
3

代码少...

CONVERT(varchar(8), DATEADD(dd,-1,GETDATE()),112)
于 2016-05-23T14:37:29.520 回答
-1

以下示例给出了昨天的日期以及小时和分钟: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)
于 2015-09-07T12:43:11.840 回答
-1
(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) 

不会破坏表达式。

于 2017-07-06T01:22:45.343 回答