【问题标题】:Converting String to Date in SSIS derived column在 SSIS 派生列中将字符串转换为日期
【发布时间】: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 .

【问题讨论】:

  • 您可以添加示例日期来检查问题吗?

标签: sql-server ssis ssis-2012


【解决方案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 但我同意脚本组件方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 1970-01-01
  • 2014-05-24
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多