在 SSIS 派生列中将字符串转换为日期
Posted
技术标签:
【中文标题】在 SSIS 派生列中将字符串转换为日期【英文标题】:Converting String to Date in SSIS derived column 【发布时间】:2021-11-24 18:42:13 【问题描述】:我有项目参数,其值类似于“Group_AR_21Sep2021”,我想获取此日期并将其放入我从 Excel 加载的表的列之一中。所以我把它放在派生列(DT_DBDATE)(SUBSTRING(@[$Project::ARFileName],10,18))
但它给我这个错误
[派生列 [2]] 错误:将表达式“(SUBSTRING(@[$Project::ARFileName],10,18))”从数据类型“DT_WSTR”转换为数据类型“DT_DBDATE”失败,错误代码为 0xC00470C2 .
【问题讨论】:
您可以添加示例日期来检查问题吗? 【参考方案1】:子字符串函数的第二个参数应该是日期的长度:(DT_DBDATE)(SUBSTRING(@[$Project::ARFileName],10,9))
但是,这仍然会失败,因为 SSIS 在迄今为止的类型转换时非常脆弱。我建议改用脚本组件:
1 - 在只读变量集合中选择项目参数
2 - 将一列添加到输出列并使其成为 DT_DBDATE,即 NewDate
3 - 更新脚本以对新列进行强制转换:
public override void Input0_ProcessInputRow(Input0Buffer Row)
Row.NewDate = Convert.ToDateTime(Variables.ARFileName.Substring(9,9));
【讨论】:
我更喜欢 DateTime.ParseExact 但我同意脚本组件方法。以上是关于在 SSIS 派生列中将字符串转换为日期的主要内容,如果未能解决你的问题,请参考以下文章
在表达式生成器 SSIS 2019 中将日期时间转换为字符串
SQL SSIS 使用派生列转换来处理空数据.. 替代方案?