SSIS派生列转换字符串到日期

时间:2012-07-12 19:31:55

标签: ssis bids

我正在尝试使用Derived列将字符串转换为Date,而我正在使用Flat File Source。 我在stackoverflow上阅读了大量文章,并按照相同的步骤操作,但我无法将我的字符串转换为日期格式。

这是字符串

Tue Nov 25 17:32:03 EST 2008

我希望像

一样展示它
2008-nov-25

我尝试使用以下代码

(DT_DBDATE)(SUBSTRING(dateCreated,24,4) + "-" + SUBSTRING(dateCreated,4,3) + "-" +    SUBSTRING(dateCreated,8,2))

我也尝试使用

  (DT_DATE)(SUBSTRING(dateCreated,24,4) + "-" + SUBSTRING(dateCreated,4,3) + "-" +    SUBSTRING(dateCreated,8,2))

  (DT_DBTIMESTAMP)(SUBSTRING(dateCreated,24,4) + "-" + SUBSTRING(dateCreated,4,3) + "-" +    SUBSTRING(dateCreated,8,2))

这是将字符串转换为日期格式的正确方法吗?

2 个答案:

答案 0 :(得分:0)

我认为不可能按照BOL以yyyy-mon-dd的格式显示。我检查了你的表情,经过微小的改动后,能够让它发挥作用。您不能再将字符串强制转换为字符串(您希望输出中包含月份名称)。即使您使用DATEPART函数,它也会再次将不同的部分连接成一个字符串。

与您的输入一起使用的表达式如下(将@dateCreated替换为您想要的任何内容)。

SUBSTRING(@[User::dateCreated],24,5) + "-" + SUBSTRING(@[User::dateCreated],4,4) + "-" + SUBSTRING(@[User::dateCreated],8,3)

答案 1 :(得分:0)

谢谢拉吉夫!

所以给出所需结果的最终表达式是: -

(DT_DBTIMESTAMP)(SUBSTRING(dateCreated,24,5) + "-" + SUBSTRING(dateCreated,4,4) + "-" + SUBSTRING(dateCreated,8,3) + " " + SUBSTRING(dateCreated,11,9))

输入为: -

Tue Nov 25 17:47:41 EST 2008

输出结果为: -

2008-11-25 17:47:41.000