在SSIS表达中返回上个月

时间:2014-05-06 18:23:37

标签: sql sql-server ssis

我正在编写一个SSIS表达式,它创建一个与DimDate表一起使用的日期键。 我需要表达式返回前一个月而不是当前月份。

(DT_STR, 4,1252)YEAR(GETDATE()) + RIGHT("0" + (DT_STR, 2, 1252) MONTH(GETDATE()),2) + RIGHT("0" + (DT_STR, 2, 1252)  DAY( GETDATE()), 2)

我尝试在下面添加-1,但它不允许它工作。

RIGHT("0" + (DT_STR, 2, 1252)  MONTH( GETDATE()-1  ),2)

RIGHT("0" + (DT_STR, 2, 1252)  MONTH( GETDATE()  )-1,2)

RIGHT("0" + (DT_STR, 2, 1252)  MONTH( GETDATE()  ),2)-1

我做错了什么?

3 个答案:

答案 0 :(得分:3)

在检索月份部分时尝试此操作 - 对(" 0" +(DT_STR,2,1252)月(DATEADD(" MONTH",-1,GETDATE())),2)

答案 1 :(得分:0)

SQL函数(您应该可以在这里使用)将类似于:

MONTH(DATEADD(MONTH, -1, GETDATE()))

这将返回上个月的数值。

编辑: SSIS可能有点搞笑,这应该适合你:      SUBSTRING((DT_WSTR,20)(DT_DBDATE) DATEADD( "mm", -1, GETDATE()), 6, 2)

这会将当前日期减一个月转换为YYYY-MM-DD格式。然后,SUBSTRING函数将获取MM部分。使用上述转换时,日期将始终采用这种格式,因此我希望这可以帮助您解决问题!

供参考: http://technet.microsoft.com/en-us/library/ms137586(v=sql.100).aspx

答案 2 :(得分:0)

DATEADD("Month", -1,GETDATE())

使用上面的代码可以确保它也带有年份和日期。那么你可以用任何格式呈现日期时间