【发布时间】:2013-12-28 08:03:31
【问题描述】:
我是 SSIS 的新手。我通过创建一些示例包来学习 SSIS。我正在将 .csv 文件中的数据加载到 SQL 服务器表中。在 csv 文件中,我有一列作为 varchar 格式(例如:2012 年 2 月 22 日),但我需要将日期格式转换为 YYYY-MM-DD。您能帮我创建此转换的表达式吗?
如果您需要更多详细信息,请告诉我。
【问题讨论】:
标签: ssis
我是 SSIS 的新手。我通过创建一些示例包来学习 SSIS。我正在将 .csv 文件中的数据加载到 SQL 服务器表中。在 csv 文件中,我有一列作为 varchar 格式(例如:2012 年 2 月 22 日),但我需要将日期格式转换为 YYYY-MM-DD。您能帮我创建此转换的表达式吗?
如果您需要更多详细信息,请告诉我。
【问题讨论】:
标签: ssis
如果输入格式是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)
请注意,我在上面的表达式中添加了换行符以使其更易于阅读。如果您尝试将其粘贴到派生列表达式中,它只会粘贴第一行。
另外,请注意此表达式将值转换为 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)
【讨论】: