将YYYY-MMM-DD转换为SSIS中的日期

时间:2015-06-04 08:35:56

标签: ssis

我有一个平面文件,其日期字段的格式为YYYY-MMM-DD HH24:MM:SS:

2015-Apr-09 06:57:21.980549

我想将它作为日期时间加载到我的表格中,是否知道如何进行此转换?

我正在使用SSIS 2014

2 个答案:

答案 0 :(得分:0)

问题在于愚蠢的MMM部分。

要在不使用.net脚本的情况下摆脱它,请使用以下公式添加派生列:

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(testdate,"Jan","01"),"Feb","02"),"Mar","03"),"Apr","04"),"May","05"),"Jun","06"),"Jul","07"),"Aug","08"),"Sep","09"),"Oct","10"),"Nov","11"),"Dec","12")

然后,将结果列传递给数据转换,并将目标类型设置为精度为7的DB_DBTIMESTAMP2(以便不会丢失数据精度),或者如果精度损失可接受,则将其设置为DB_DBTIMESTAMP。

后者应隐式转换为DATE,但如果不是,则需要明确执行另一次转换。

答案 1 :(得分:-1)

灵活而快速的方法是:

第1步:在您的数据流中添加派生列转换模块: http://social.technet.microsoft.com/wiki/contents/articles/7399.ssis-derived-column-transformation.aspx

使用此方法,您可以灵活地进行修改 - 您可以从多个列构建日期列,例如:

第2步:在" Expression"提交你的转型你必须使用这样的CAST: (DT_DBTIMESTAMP2,4)[YourColumn]:

https://msdn.microsoft.com/en-us/library/ms141704.aspx

如果您的列格式不正确(date-month-etc ...),您可以使用substring函数将字符串按正确的顺序/格式放置:

SUBSTRING(SSIS Expression) - 返回字符表达式的一部分。