目前正在开发一个将表达式从前一个日期传递到文件名的包。我当前的代码是以下字符串变量:
(DT_WSTR,20)DATEPART( “YYYY”,DATEADD( “DD”, - 1,DATEADD( “MM”,DATEDIFF( “MM”, (DT_DATE)“1900-01-01”,getdate()) - 2,(DT_DATE)“1900-01-01”))) + RIGHT(“0”+(DT_WSTR,20)DATEPART(“MM”,Dateadd(“DD”, - 1,dateadd(“MM”,datediff(“MM”,(DT_DATE)“1900-01-01”, getdate()) - 5,(DT_DATE)“1900-01-01”))),2) +“01”
目前产生的输出为:
20171101
目前这是不正确的,因为我希望日期来自上一年:
20161101
这是我想要的论坛:
从今天起,返回过去7个月的第1天。
示例:2017年2月2日将返回11/1/2017; 6/21/2017将于12/1/2016返回; 2017/10/10将返回1/1/2017;等
这可以通过SSIS中的变量来完成吗?
答案 0 :(得分:0)
您的表达式可以修改(和简化)到此
(DT_WSTR, 8)( ( YEAR( DATEADD( "MM", -7, GETDATE() ) ) * 10000 ) + ( MONTH( DATEADD("MM", -7, GETDATE() ) ) * 100 ) + 1 )
在Yesterday's date in SSIS package setting in variable through expression中感谢@Rangani“乘以并添加而不是字符串连接”技巧
答案 1 :(得分:0)
SELECT LEFT(CONVERT(VARCHAR, DATEADD("MM", -6, '2017-05-02'), 112), 6) + '01'
SELECT LEFT(CONVERT(VARCHAR, DATEADD("MM", -6, '2017-06-21'), 112), 6) + '01'
SELECT LEFT(CONVERT(VARCHAR, DATEADD("MM", -6, '2017-07-10'), 112), 6) + '01'