SSIS expression previous date without DateAdd()
当前正在开发一个程序包,该程序包将表达式从先前的日期传递到文件名。 我拥有的当前代码如下作为字符串变量:
(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个月的月份的第一天。
示例:5/2/2017将返回11/1/2017; 2017年6月21日将返回2016年12月1日; 2017年7月10日将返回1/1/2017; 等等
这可以通过SSIS中的变量来完成吗?
您的表达式可以对此进行修改(并简化)
1 | (DT_WSTR, 8)( ( YEAR( DATEADD("MM", -7, GETDATE() ) ) * 10000 ) + ( MONTH( DATEADD("MM", -7, GETDATE() ) ) * 100 ) + 1 ) |
- 从当前日期减去7个月
- 将结果年份乘以10000
- 从当前日期减去7个月
- 将结果月份乘以100
- 将年值,月值和1相加(第一天)
- 转换为字符串
记下昨天日期在SSIS包中的@Rangani日期,该值通过表达式中的变量"乘以并加法而不是字符串concat"设置
1 2 3 | 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' |