Datetime SSIS从ISO格式YYYY-MM-DDTHH:MM:SS.000Z转换日期时间
我有一个带日期栏的平面文件。它使用ISO 8601日期时间标准格式化。 格式如下:Datetime SSIS从ISO格式YYYY-MM-DDTHH:MM:SS.000Z转换日期时间,datetime,ssis,typecast-operator,Datetime,Ssis,Typecast Operator,我有一个带日期栏的平面文件。它使用ISO 8601日期时间标准格式化。 格式如下:2013-10-28T10:23:01.000Z 如何将其转换为datetimestamp格式?我使用了“派生列”,但没有找到类型转换。我创建了一个示例包,添加了一个平面文件连接管理器,并使用数据类型DT_I4和DT_DATE定义了我的两个列 rownum,eventdate 1,2013-10-28T10:23:01.000Z 然后,我添加了一个带有平面文件源的数据流,选择了源文件,导入失败。导入失败是因为出现
2013-10-28T10:23:01.000Z
如何将其转换为datetimestamp格式?我使用了“派生列”,但没有找到类型转换。我创建了一个示例包,添加了一个平面文件连接管理器,并使用数据类型DT_I4和DT_DATE定义了我的两个列
rownum,eventdate
1,2013-10-28T10:23:01.000Z
然后,我添加了一个带有平面文件源的数据流,选择了源文件,导入失败。导入失败是因为出现了最令人恼火的错误
数据转换失败。列“eventdate”的数据转换返回状态值2和状态文本“由于数据可能丢失,无法转换该值。”
如何将日期转换为日期?设计决策应尽可能友好地导入数据。这意味着,人们使用理智的、基于标准的、文本表示的日期时间之类的东西会受到影响。美国的懒惰者可以使用01-02-05
并将其数据解释为2005年1月2日
,而英国的懒惰吉特人可以使用2005年2月1日
,日本人认为每个人都疯了,因为这显然是2001年2月5日
因此,应该归咎于本地性,因为默认情况下,它会试图超越您的源数据。那么,解决方案就是告诉SSIS闭嘴,并已经获取我的数据
闭嘴,已经拿走我的数据了!
在数据流中,右键单击数据源并选择高级编辑器。在“输入输出属性”选项卡中,展开输出列,对于包含这些良好数据的每一列,需要将FastParse
从默认值false设置为True
谢谢,这就成功了。添加一些上下文:My(ISO 8601)DateTime字段看起来像
2019-05-12T03:13:22.000Z
(T
和Z
是可选的),DB中的目标列被定义为datetime2(3)
(如果您没有/需要秒的分数,可以使用datetime2(0)
);SSIS平面文件Con列的数据类型被简单地定义为dtu DATE
,然后我使用了上面描述的FastParse=True
选项。