SSIS 返回日期中的表达式不存在

Expression in SSIS returning date that does not exist

我有一个表达式 returns 6 个月前的日期,格式为 03/31/2021。这一直按预期运行,直到今天返回日期 09/31/2020,但该日期不存在。怎样写表达式才能得到想要的结果?

RIGHT("0" + (DT_WSTR,2)MONTH( DATEADD( "MONTH" , -6,GETDATE())), 2) + 
"/"+ RIGHT("0" + (DT_WSTR,2)DAY(GETDATE()), 2) + 
"/" +(DT_WSTR,4)YEAR(DATEADD( "MONTH" , -6,GETDATE()))

问题出在第二组字符串逻辑上

RIGHT("0" + (DT_WSTR,2)DAY(GETDATE()), 2)

获取当天的天数(31)。您可能打算像处理“年”和“月”一样将其推迟 6 个月。

RIGHT("0" + (DT_WSTR,2)DAY(DATEADD("MONTH" , -6,GETDATE()), 2)

如果是我,我会创建一个新变量 AnchorDate 并将 Evaluate as Expression 设置为 True 并使用表达式

DATEADD("MONTH", -6, GETDATE())

我可以测试一下,是的,已经是 6 个月前了。

现在我的日期字符串变得更清晰了,因为我没有重复(或者没有重复你的情况的 1/3)日期操作逻辑。

      RIGHT("0" + (DT_WSTR,2)MONTH(@[User::AnchorDate]), 2) + 
"/" + RIGHT("0" + (DT_WSTR,2)DAY  (@[User::AnchorDate]), 2) + 
"/" +(DT_WSTR,4)YEAR(@[User::AnchorDate])