我尝试将字符串列[mydate]
转换为日期,我想使用Derived Column Transformation
。问题是我的日期类似于'1/10/2015'
,'1/1/2015'
,'11/1/2015'
和'11/9/2015'
。因此,格式可以在D/MM/YYYY
,D/M/YYYY
,DD/M/YYYY
和DD/MM/YYYY
之间更改。
您能指导我创建Derived Column Transformation
的表达式吗?
我尝试使用这样的东西:
(DT_DATE)(ISNULL([mydate]) == FALSE ? (RIGHT([mydate],4) + "-" + "2" + "-" + LEFT([mydate],1)) : [mydate])
答案 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/2000
和YYYYMMDD
等日期处理长度变化的错误。
派生列的输出名为Data Conversion
,然后将此值传递到输出Date Converted YYYYMMDD
的{{1}}转换中,如下所示。
Data Conversion
任务只是执行以下操作: