我正在尝试使用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))
这是将字符串转换为日期格式的正确方法吗?
答案 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