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

SSIS: convert ISO 8601 string to datetime column

我有一个 CSV falt 文件,我正尝试使用 SSIS 导入。日期字符串的格式为 20170215T000002 - 这看起来像 ISO 8601,所以我很确定我应该能够将它映射到 datetime 列类型 SQL,但我丢失了所有时间数据,只得到日期部分(正确解析)。

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

我认为 ISO 8601 的时间分隔符是冒号。

假设您使用的是 SQL 服务器,这应该有效:

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

假设日期列名是inColumn

在 DataflowTask 中,添加脚本组件,将 inColumn 标记为输入列,添加数据类型为 DT_DBTIMESTAMP

的新输出列 outColumn

在脚本中,在Input0_ProcessInputRow子中使用DateTime.ParseExact函数如下:

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