SSIS包 - 带零的日期字段的派生列条件表达式

时间:2017-02-10 19:48:08

标签: sql-server ssis

我对SSIS及其数据类型相对较新。我已成功创建数据流任务,将数据从逗号分隔的.txt平面文件导入SQL Server。运行任务时,在.txt文件中的日期字段为0的位置发生错误。

image description

对于将日期字段转换为0到Null的派生列表达式,我到目前为止已经提出了以下内容...

[Latest Bill Due Date]==0 ? NULL(DT_DATE) : (DT_DATE)[Latest Bill Due Date]

...但不接受逻辑并显示错误消息:

  

数据类型“DT_WSTR”和“DT_I4”与二进制运算符“==”不兼容。操作数类型无法隐式转换为操作的兼容类型。要执行此操作,需要使用强制转换运算符显式转换一个或两个操作数。

提前感谢任何方向。

1 个答案:

答案 0 :(得分:-1)

我遇到了类似的问题,当在文本文件中有00000000值时,必须在datetime列中将其转换为null。最终为我工作的是在列中建立null值为default的表,并添加脚本组件作为转换。添加类似于' VerifyNullDateVar'的列输出。并在脚本内部执行类似

的操作
    if (Row.DATEVAR == 0)
    {
         //do whatever you want to do if the input value is an actual date

         Row.VerifyNullDateVar = 2;
    }
    else
         Row.VerifyNullDateVar = 1;

DATEVAR 是您从文本文件中获取的输入列。之后,使用派生列从 VerifyNullDateVar

中读取值
  1. VerifyNullDating == 1
  2. VerifyNullDating == 2
  3. 最后,您需要设置2个OLEDB目标,一个可以在表中保存日期值;另一个当你保存其中的任何内容时,它会获得默认的null