我在SSIS
包中设置一个变量,我正在使用这个表达式:
DATEPART("yyyy", GETDATE())*10000
+ DATEPART("month", GETDATE())*100
+ DATEPART("day",GETDATE())
该表达式将为我提供一个变量值,例如“yyyymmdd”。我的问题是我想要昨天的约会。
例如在 2014 年 11 月 1 日,它应该是 20141031
您可以使用DATEADD
您的表达式的函数:
DATEPART("yyyy", DATEADD( "day",-1, GETDATE()))*10000 + DATEPART("month", DATEADD( "day",-1, GETDATE())) * 100 + DATEPART("day", DATEADD( "day",-1, GETDATE()))
这将给出昨天的日期
(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)
代码少...
CONVERT(varchar(8), DATEADD(dd,-1,GETDATE()),112)
以下示例给出了昨天的日期以及小时和分钟: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)
(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)
不会破坏表达式。