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])
我有一个表达式 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])