我有一个带有日期列的平面文件,它采用ISO 8601日期时间标准进行格式化。 格式如下:2013-10-28T10:23:01.000Z
我该如何将其转换为日期时间戳格式? 我已经使用了“派生列”,但是我没有找到类型转换。
我有一个带有日期列的平面文件,它采用ISO 8601日期时间标准进行格式化。 格式如下:2013-10-28T10:23:01.000Z
我该如何将其转换为日期时间戳格式? 我已经使用了“派生列”,但是我没有找到类型转换。
rownum,eventdate
1,2013-10-28T10:23:01.000Z
我随后添加了一个数据流并使用Flat File Source,选择了源文件,结果导入失败。导入失败是因为最让人发狂的错误。
数据转换失败。列“eventdate”的数据转换返回状态值2和状态文本“由于可能会丢失数据,因此无法转换该值。”
怎么可能把日期转换成非日期呢?设计决策是尽可能友好地导入数据。这意味着使用标准文本表示方式(如日期时间)的人会遇到问题。美国人可以懒得用 01-02-05
,而其数据会被解释为 2005年1月2日
,而英国懒虫则可以让他们的数据被解释为 2005年2月1日
,至于日本人则认为大家都疯了,因为显然应该是 2001年2月5日
。
所以,默认情况下SSIS试图超越您的源数据,所以应该归咎于地域。解决方案是告诉SSIS闭嘴并接受我的数据!
在数据流中,右键单击数据源并选择高级编辑器。在Input Output Properties选项卡中,展开您的输出列,并为每个包含此数据的列将FastParse
从默认值false更改为True。
2019-05-12T03:13:22.000Z
(T
和Z
是可选的),目标列在数据库中被定义为datetime2(3)
(如果您没有/不需要秒的小数部分,可以使用datetime2(0)
);SSIS Flat File Con列的DataType仅被定义为DT_DATE
,然后我使用了上面描述的FastParse=True
选项。 - wp78de