首页 > 解决方案 > 添加新的转换列失败

问题描述

这里的第一个问题:)

我正在做一个项目,我只需要将 Employee 表(ID、Firstname、Lastname)中的 3 列从 DB 复制到 Excel 工作表目标,

我需要创建一个名为“Seniority”的新列。

我正在考虑采用所有员工的“HireDate”(我也曾考虑将其映射为派生列转换)并将其转换为年资。

在派生列转换编辑器中,我输入了这些值:

派生列名称 - 资历

派生列 -

表达式 - (DT_I4) DATEDIFF( "YEAR", YEAR( [HireDate] ) , YEAR( GETDATE() ) )

并得到这个错误:

数据流任务 [派生列 [234]] 出错:函数“DATEDIFF”不支持参数号 2 的数据类型“DT_I4”。无法将参数的类型隐式转换为函数的兼容类型。要执行此操作,需要使用强制转换运算符显式强制转换操作数。

数据流任务 [派生列 [234]] 出错:评估函数“DATEDIFF”失败,错误代码为 0xC0047089。

数据流任务 [派生列 [234]] 出错:函数“DATEDIFF”不支持参数号 2 的数据类型“DT_I4”。无法将参数的类型隐式转换为函数的兼容类型。要执行此操作,需要使用强制转换运算符显式强制转换操作数。

数据流任务 [Derived Column [234]] 出错:计算表达式“(DT_I4)DATEDIFF(“YEAR”,YEAR([HireDate]),YEAR(GETDATE()))“失败,错误代码为0xC00470C5。表达式可能有错误,例如除以零,在解析时无法检测到,或者可能存在内存不足错误。

数据流任务 [Derived Column [234]] 出错:“Derived Column.Outputs [Derived Column Output ].Columns[Seniority]" 无效。

数据流任务 [Derived Column [234]] 出错:无法在“Derived Column.Outputs[Derived Column Output].Columns[Seniority]”上设置属性“Expression”。

(微软视觉工作室)

请帮忙。

谢谢,

标签: ssis

解决方案


函数 YEAR([HireDate]) 返回一个 DT_I4(四字节有符号整数),但 DATEDIFF 函数需要两个日期作为参数。所以表达式

DATEDIFF("YEAR",[HireDate],GETDATE())

返回想要的结果。


推荐阅读