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

Sql server SSIS包-日期字段为零的派生列条件表达式,sql-server,ssis,Sql Server,Ssis,我对SSIS及其数据类型比较陌生。我已成功创建了一个数据流任务,该任务将数据从逗号分隔的.txt平面文件导入SQL Server。运行任务时,在.txt文件中日期字段为0的位置发生错误 对于将日期字段从0转换为Null的派生列表达式,到目前为止,我已经提出了以下建议 [Latest Bill Due Date]==0 ? NULL(DT_DATE) : (DT_DATE)[Latest Bill Due Date] …但不接受逻辑,并显示错误消息: 对于二进制运算符“=”,数据类型“DT_W

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

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

[Latest Bill Due Date]==0 ? NULL(DT_DATE) : (DT_DATE)[Latest Bill Due Date]
…但不接受逻辑,并显示错误消息:

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


提前感谢您的指导。

我遇到了一个类似的问题,当文本文件中有一个
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

  • VerifyNullDating==1
  • VerifyNullDating==2

  • 最后,您需要设置2个OLEDB目的地,一个是可以在表中保存日期值的目的地;另一种方法是,当您不在其中保存任何内容时,它将获得默认值
    null
    value

    “最新票据到期日”似乎是unicode(DT_WSTR)。在0周围添加引号。i、 e.[最新票据到期日]=“0”?空(到期日):(到期日)[最新票据到期日]谢谢。写下这个问题让我还记得我的Java编程类,其中比较两侧的数据类型必须是相同的类型。源字段被识别为字符串。最终代码有效(包括在源数据中处理YYYYMMDD格式所需的子字符串):LTRIM([最新票据到期日])=“0”?空(票据到期日):(票据到期日)(子字符串([最新票据到期日],1,4)+“-”+子字符串([最新票据到期日],5,2)+“-”+子字符串([最新票据到期日],7,2))