You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS派生列实现LookupDate:基于NotificationDate生成上年年末日期

解决SSIS派生列生成LookupDate的问题

嘿,我来帮你搞定这个LookupDate列的生成问题!你原来的表达式有两个小问题导致结果不对,咱们一步步修正:

原表达式的问题

你的表达式 "12" + "-" + "31" + "-" + YEAR( [NotificationDate] )-1 存在两个关键问题:

  1. 类型不匹配:YEAR([NotificationDate]) 返回的是整数类型,直接和字符串拼接会触发SSIS的类型转换错误,因为整数和字符串不能直接相加。
  2. 运算顺序错误:减1的操作没有加括号,会先执行字符串拼接,再对拼接后的结果做减法,这显然不是你想要的逻辑。

正确的派生列表达式

我们需要先计算前一年的年份,再把它转换成字符串,最后和固定的"12-31-"拼接。这里有两种常用的写法:

方法1:使用STR函数转换数值为字符串

"12-31-" + STR(YEAR([NotificationDate]) - 1, 4)
  • YEAR([NotificationDate]) - 1:先算出NotificationDate年份的前一年
  • STR(..., 4):把计算后的年份数值转成4位的字符串,确保年份是完整的四位格式(比如2014而不是201)

方法2:使用CAST函数转换类型

"12-31-" + CAST(YEAR([NotificationDate]) - 1 AS DT_WSTR, 4)
  • CAST(AS DT_WSTR, 4):将整数年份转换为长度为4的宽字符串类型,同样保证四位年份的格式

验证效果

比如当NotificationDate的年份是2015时,两个表达式都会生成"12-31-2014";如果年份是2016,就会得到"12-31-2015",完全符合你的需求。

内容的提问来源于stack exchange,提问作者Addy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:54:20