首页 > 解决方案 > 将 datetime2 存储在 ssis 变量中

问题描述

我正在使用SQL Server 2012 Enterprise. 我有一个要求,我必须DATETIME2在 SSIS 变量中存储具有数据类型的数据。不幸的是,SSIS 变量没有那种数据类型。

如果我将它存储到datetime数据类型中,我会丢失信息。任何人都可以帮助提供解决方法吗?

PS:我的源系统也是 SQL Server 2012,我正在从具有 datetime2 数据类型的列中读取数据。

标签: sql-serverdatetimessis

解决方案


至少目前,SSIS 有一个“已知”的不足,因为变量值类型DateTime只有秒的精度;实际上与 a 相同datetime2(0)。因此,如果您需要存储比一秒更准确的内容,例如如果您正在使用datetime并且 1/300 秒很重要,或者如果您使用datetime2的精度为 1 或更高,则 value typeDateTime将无法为您服务目标。

因此,有几个不同的选项将 的值存储为 aString或数值。然而,这确实带来了它自己的问题。最重要的是,这些数据类型都不是日期和时间数据类型。

因此,这取决于您的目标是什么。我很可能会使用String数据类型并确保它具有 ISO 格式 ( 'yyyy-MM-ddThh:mm:ss.nnnnnnn')。如果您使用的是 T-SQL 任务之类的东西,您可以将变量照常传递给任务,数据引擎会将文字字符串解释为 a datetime2(7)(或您使用的任何文字精度)。


推荐阅读