在 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 中将日期时间转换为字符串

SSIS:将纪元列转换为日期

如何在ssis中将空白转换为null

SQL SSIS 使用派生列转换来处理空数据.. 替代方案?

在 SSIS 中将日期 DD.MM.YYYY hh:mm:ss 转换为 YYYY-MM-DD

如何在配置单元中将字符串数据类型列转换为日期格式