来自派生列的可空日期时间

时间:2014-11-13 17:40:55

标签: sql-server datetime ssis null ssis-2012

从平面文件中提取数据。有问题的字段以字符串形式出现,并且格式化为适合Datetime类型的db列。 Field允许数据库中的null,并且文件包含成功转换为此字段中的日期的空值和有效字符串。

当我尝试将空值传递给数据库时,SSIS会抛出错误。

错误

  

错误:数据插入期间发生异常,从提供程序返回的消息是:SqlDateTime overflow。必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。

数据转换代码

([PO Scheduled Ship Date] == "") ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)(SUBSTRING([PO Scheduled Ship Date],1,4) + "-" + SUBSTRING([PO Scheduled Ship Date],5,2) + "-" + SUBSTRING([PO Scheduled Ship Date],7,2))

DataViewer示例

DataViewer Sample

DB列定义

DB Column Definition

2 个答案:

答案 0 :(得分:0)

将表达式更改为 -

后尝试
 (TRIM([PO Scheduled Ship Date]) == "" || TRIM([PO Scheduled Ship Date]) == "NULL") ? NULL(DT_DBTIMESTAMP) : (DT_DBTIMESTAMP)(SUBSTRING([PO Scheduled Ship Date],1,4) + "-" + SUBSTRING([PO Scheduled Ship Date],5,2) + "-" + SUBSTRING([PO Scheduled Ship Date],7,2))

答案 1 :(得分:0)

罪魁祸首是日期范围之外的数据。 “00010101”。