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

SSIS - Converting unformatted strings dates to YYYY-MM-DD

我正在尝试将字符串列 [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])

这项任务非常棘手,因为我们不仅要处理未格式化的字符串日期,而且它们也不属于区域中性 YYYY-MM-DD 格式。

要解决这个问题,我们可以对 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 转换在 SSIS 中进行转换。这避免了处理 1/1/200010/10/2000.

等日期长度变化的错误

派生列的输出名为 YYYYMMDD,然后将该值传递到具有输出 Date Converted YYYYMMDDData Conversion 转换,如下所示。

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

您可以使用替换来解决这个问题 替换(列名,“/”,“-”)