我正在编写一个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
我做错了什么?
答案 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())
使用上面的代码可以确保它也带有年份和日期。那么你可以用任何格式呈现日期时间