1

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

现在,所有记录都失败,并在此特定列上出现“转换失败,因为数据值溢出了提供者使用的类型”错误。

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

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

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

唯一另一个有趣的信息是,当对另一台服务器运行源查询时,该程序包运行良好,这意味着可能涉及到一个设置——但我发现两台服务器之间没有明显差异。

4

2 回答 2

2

我打算建议添加一个“数据转换组件”来处理它,但是由于您仅在目标上进行了更改,这意味着您可以更改源查询来执行以下操作:

select cast(YOUR_DATE_COLUMN as datetimeoffset(0))
于 2012-03-14T15:14:07.777 回答
0

万一其他人正在寻找,我们找到了一个替代解决方案,如果源是 SQL 2005(不支持 datetimeoffset)。

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

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

于 2012-03-27T15:33:48.787 回答