SSIS表达式帮助 - 派生列中的日期转换

时间:2013-12-27 15:13:36

标签: ssis

我是SSIS的新手。我通过创建一些示例包来学习SSIS。我正在将.csv文件中的数据加载到SQL服务器表。在csv文件中,我有一列作为varchar格式(例如:22-Feb-2012 ),但我需要将日期格式转换为YYYY-MM-DD。您可以帮我创建此转换的表达式。

如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

如果输入格式为22-Feb-2012,则下面的表达式应该有效(假设您的输入列名称为[Col]):

(DT_WSTR, 4)DATEPART("YEAR", (DT_DATE)[Col]) + "-" +
RIGHT("0" + (DT_WSTR, 2)DATEPART("MONTH", (DT_DATE)[Col]), 2) + "-"+
RIGHT("0" + (DT_WSTR, 2)DATEPART("DAY", (DT_DATE)[Col]), 2)

请注意,我在上面的表达式中添加了换行符,以使其更容易阅读。如果您尝试将其粘贴到Derived Column表达式中,它只会粘贴第一行。

另外,请注意此表达式将值转换为DT_DATE 3次。执行数据转换以将varchar列转换为DT_DATE,然后在派生列中执行其余逻辑可能更有效。或者你可以对日期和年份进行字符串操作(假设2位数的日期格式,例如01):

RIGHT(Col,4) + "-" + 
RIGHT("0" + (DT_WSTR,2)DATEPART("MONTH",(DT_DATE)Col),2) + "-" + 
SUBSTRING(Col,1,2)