SSIS 源中日期的隐式转换
在处理数据时,通常需要在不同格式之间转换日期。在 SSIS 中,日期转换的行为有时可能是意外的。本文研究了日期字符串到不同 SSIS 数据类型的隐式转换,并提供了受支持格式的参考图表。
下表概述了日期时间的默认格式从字符串转换时的数据类型:
Data Type | Default Format | |
---|---|---|
DT_DBDATE | yyyy-mm-dd | |
DT_FILETIME | yyyy-mm-dd hh:mm:ss:fff | |
DT_DBTIME | hh:mm:ss | |
DT_DBTIME2 | hh:mm:ss[.fffffff] | |
DT_DBTIMESTAMP | yyyy-mm-dd hh:mm:ss[.fff] | |
DT_DBTIMESTAMP2 | yyyy-mm-dd hh:mm:ss[.fffffff] | |
DT_DBTIMESTAMPOFFSET | yyyy-mm-dd hh:mm:ss[.fffffff] [{ | -} hh:mm] |
为了测试日期时间字符串的隐式转换,使用 SSIS 和 SQL Server 进行了实验。
创建了带有 Dataflowtask 的 SSIS 包。使用脚本组件(作为源)和平面文件目标。脚本组件有一个 DT_DbTimeStamp 类型的输出列。在脚本中,进行了一系列实验:
这些实验的结果表明,多种日期时间格式都会隐式转换为 DT_DBTIMESTAMP 数据类型,即使是那些未考虑的格式规范。
SQL Server 查询用于测试某些字符串格式是否会隐式转换为日期时间。执行了以下查询:
SELECT CONVERT(DATETIME, '" + dtdate.ToString(strFormat) + '")
结果显示,任何语言设置都只能正确解释两种日期时间字符串格式:
以上是SSIS如何将日期字符串隐式转换为不同的数据类型?的详细内容。更多信息请关注PHP中文网其他相关文章!