SSIS:将ISO 8601字符串转换为日期时间列

问题描述:

我有一个CSV Falt文件,我试图使用SSIS导入。日期字符串的格式为20170215T000002 - 这看起来像ISO 8601,所以我很确定我应该能够将其映射到SQL中的列类型datetime,但我失去了所有的时间数据和只是得到日期组件(正确解析)。SSIS:将ISO 8601字符串转换为日期时间列

有关如何在SQL中将此文本元素转换为datetime格式的任何建议?

+0

用您正在使用的数据库标记您的问题。 –

假设日期列名是inColumn

在DataflowTask,添加脚本组件,马克inColumn作为输入列,添加新的输出列outColumn with dataType DT_DBTIMESTAMP

在脚本中,在Input0_ProcessInputRow下使用DateTime.ParseExact功能如下:

Row.inColumn = DateTime.ParseExact(Row.inColumn,"yyyyMMddTHHmmss",New System.Globalization.CultureInfo("en-GB")) 
+1

这对我有用。谢谢! –

我认为ISO 8601有分号的冒号。

假设你正在使用SQL Server,这应该工作:

select convert(datetime, 
       stuff(stuff(col, 14, 0, ':'), 12, 0, ':'), 
       126) 
+0

它看起来确实如此,但是使用上面的@Hadi的建议,我设法让它起作用。 –