ssis - 添加新的转换列失败
问题描述
这里的第一个问题:)
我正在做一个项目,我只需要将 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”。
(微软视觉工作室)
请帮忙。
谢谢,
解决方案
函数 YEAR([HireDate]) 返回一个 DT_I4(四字节有符号整数),但 DATEDIFF 函数需要两个日期作为参数。所以表达式
DATEDIFF("YEAR",[HireDate],GETDATE())
返回想要的结果。
推荐阅读
- c# - c# - 如何禁用按钮直到文本框在c#中不为空?
- asp.net-mvc - 如何在 Asp.Net MVC 中显示上周的数据
- javascript - 重用 Axis Scale 覆盖设置域
- c++ - C ++:array1 = array2 vs使用循环将array2的值分配给array1
- c# - 使用 AngleSharp 向 Microsoft 进行身份验证
- java - 为什么用轻微形式编写的 2 个相同的数字会在 Java 中产生 2 个不同的结果
- c# - Mathf.SmoothDamp 立即发生(Unity 3d)
- arrays - 如何将指针显示为可能具有一定范围的数组
- javascript - Discord.js(v12)赠品命令->错误:无法读取未定义的属性“hasPermission”
- python - 证书透明度日志-API 限制条目范围