SSIS - 将未格式化的字符串日期转换为YYYY-MM-DD

时间:2015-11-04 17:27:50

标签: sql-server date ssis

我尝试将字符串列[mydate]转换为日期,我想使用Derived Column Transformation。问题是我的日期类似于'1/10/2015''1/1/2015''11/1/2015''11/9/2015'。因此,格式可以在D/MM/YYYYD/M/YYYYDD/M/YYYYDD/MM/YYYY之间更改。

您能指导我创建Derived Column Transformation的表达式吗?

我尝试使用这样的东西:

(DT_DATE)(ISNULL([mydate]) ==  FALSE  ? (RIGHT([mydate],4) + "-" + "2" + "-" + LEFT([mydate],1)) : [mydate])

1 个答案:

答案 0 :(得分:0)

这项任务非常棘手,因为我们不仅处理未格式化的字符串日期,而且它们也不属于区域自然Derived Column格式。

要解决此问题,我们可以使用RIGHT([mydate],4) + "/" + SUBSTRING([mydate],FINDSTRING([mydate],"/",1) + 1,FINDSTRING([mydate],"/",2) - FINDSTRING([mydate],"/",1) - 1) + "/" + SUBSTRING([mydate],1,FINDSTRING([mydate],"/",1) - 1) 的以下表达式:

/

表达式很长但它正在做的是在正斜杠YYYY/MM/DD之间取值(月,日,年)并将它们连接成类似Data Conversion的格式,然后可以使用1/1/2000转换在SSIS中转换。这避免了在10/10/2000YYYYMMDD等日期处理长度变化的错误。

派生列的输出名为Data Conversion,然后将此值传递到输出Date Converted YYYYMMDD的{​​{1}}转换中,如下所示。

date conversion from improper string into proper date

Data Conversion任务只是执行以下操作:

data conversion task of converted date