SSIS getdate进入DateTimeOffset列 - 数据值溢出该类型

时间:2012-03-14 14:47:48

标签: sql sql-server ssis datetimeoffset

我有一个SSIS包。源是SQL查询。目的地是一张桌子。该包一直有效,直到我将目标表中的列从datetime更改为datetimeoffset(0)。

现在,所有记录都失败,并且“转换失败,因为数据值溢出了提供程序使用的类型”错误。

源查询中的值是getdate()。我尝试了TODATETIMEOFFSET(getdate(),' - 05:00')但没有成功。

事实上,到目前为止唯一有效的方法是将以下内容硬编码到源查询中:

cast('3/14/12' as datetime)

另一个有趣的信息是,在针对另一台服务器运行源查询时,该软件包工作正常,这意味着可能涉及到一个设置 - 但我发现两台服务器之间没有明显的差异。

2 个答案:

答案 0 :(得分:2)

我打算建议添加一个"数据转换组件"处理它,但由于你只在目的地改变,这意味着你可以改变你的源查询:

select cast(YOUR_DATE_COLUMN as datetimeoffset(0))

答案 1 :(得分:0)

如果有其他人在寻找,我们发现了一个替代解决方案,如果源是在SQL 2005中(不支持datetimeoffset),则该解决方案有效。

select dateAdd(minute,datediff(minute,0,getutcdate()),0)

目的是降低精度。当然,我也失去了几秒钟,但如果我在几秒钟内尝试上面一行,我就会出现溢出错误。