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

如何使用Microsoft SSIS表达式从文件名提取日期并转换为20210621格式存入Int32变量

解决SSIS文件名提取日期并转换为YYYYMMDD格式的问题

我来帮你排查问题并给出正确的表达式,你的需求是从LatLong_WD_Locations_06-21-2021这个文件名里提取日期,转成20210621格式的Int32值,原表达式有两个核心问题:


原表达式的问题分析

  1. 下划线位置找错了:你的文件名包含3个下划线(LatLong_WD_Locations_日期),原表达式用FINDSTRING(@[User::v_FileName], "_", 2)找的是第二个下划线,截取的内容根本不是日期部分;
  2. 日期顺序未调整:即使截取到了06-21-2021,直接替换横杠后得到的是06212021,这是MMDDYYYY格式,不符合你要的YYYYMMDD。

正确的SSIS表达式

(DT_I4)(
    SUBSTRING(SUBSTRING(@[User::v_FileName], FINDSTRING(@[User::v_FileName], "_", 3) + 1, 10), 7, 4) 
    + SUBSTRING(SUBSTRING(@[User::v_FileName], FINDSTRING(@[User::v_FileName], "_", 3) + 1, 10), 1, 2) 
    + SUBSTRING(SUBSTRING(@[User::v_FileName], FINDSTRING(@[User::v_FileName], "_", 3) + 1, 10), 4, 2)
)

表达式分步解释

我们拆解每一步的作用,方便你理解和调试:

  1. 定位日期起始位置:FINDSTRING(@[User::v_FileName], "_", 3) 找到第三个下划线的位置,加1后就是日期部分的第一个字符;
  2. 提取完整日期字符串:SUBSTRING(..., 上面的结果+1, 10) 截取到06-21-2021;
  3. 拆分并重组日期:
    • SUBSTRING(日期字符串,7,4) 提取年份2021
    • SUBSTRING(日期字符串,1,2) 提取月份06
    • SUBSTRING(日期字符串,4,2) 提取日21
  4. 转换类型:把拼接后的20210621转成DT_I4(Int32)类型,匹配你的v_FileDate变量类型。

调试小技巧

在SSIS的表达式编辑器里,点击评估表达式按钮,可以分步验证每一段表达式的结果,比如先单独测试FINDSTRING(@[User::v_FileName], "_", 3),确认它返回的是第三个下划线的正确位置,再逐步验证后续的截取和拼接逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:28:12