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

在SSIS派生列中将字符串日期转为YYYY-MM-DD格式的问题

SSIS派生列字符串转YYYY-MM-DD格式解决方案

你遇到的核心问题是MONTH()函数仅支持日期类型参数,无法直接处理字符串。以下两种方案可以解决这个问题:

方案一:日期转换法(简洁高效)

先将原字符串转换为SSIS支持的日期类型,再提取年、月、日并拼接成目标格式:

(DT_WSTR,4)YEAR((DT_DATE)[fechaexpedicion]) + "-" + RIGHT("0" + (DT_WSTR,2)MONTH((DT_DATE)[fechaexpedicion]), 2) + "-" + RIGHT("0" + (DT_WSTR,2)DAY((DT_DATE)[fechaexpedicion]), 2)
  • 步骤说明:
    1. (DT_DATE)[fechaexpedicion]:将字符串转换为日期类型
    2. YEAR()/MONTH()/DAY():分别提取年、月、日数值
    3. (DT_WSTR,n):将数值转换为指定长度的字符串
    4. RIGHT("0" + ...,2):为月份、日期补零,确保是两位格式

注意:该方案依赖SSIS运行环境支持英文月份的解析,若环境区域设置不兼容,可使用方案二。

方案二:字符串替换法(无区域限制)

直接对原字符串的月份缩写进行替换,避免日期转换的区域问题:

LEFT([fechaexpedicion],4) + "-" + 
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
SUBSTRING([fechaexpedicion],6,3),
"Jan","01"),"Feb","02"),"Mar","03"),"Apr","04"),"May","05"),"Jun","06"),
"Jul","07"),"Aug","08"),"Sep","09"),"Oct","10"),"Nov","11"),"Dec","12") + 
"-" + SUBSTRING([fechaexpedicion],10,2)
  • 步骤说明:
    1. LEFT([fechaexpedicion],4):提取年份(前4位)
    2. SUBSTRING([fechaexpedicion],6,3):提取月份缩写(第6-8位)
    3. 嵌套REPLACE:将每个英文月份缩写替换为对应的两位数字
    4. SUBSTRING([fechaexpedicion],10,2):提取日期(第10-11位)
    5. 拼接所有部分为YYYY-MM-DD格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:05:33