1

我有一个 sql server 链接服务器来访问一个 informix 数据库,我使用 openquery 来运行查询,然后将结果插入到一个 sql server 表中。

问题是当我运行如下代码时:

INSERT INTO table_name
( date, comments, user )
SELECT f.date
     , f.comments
     , f.user
  FROM OPENQUERY( LINKED_SERVER_NAME, 
                  'select date
                        , description as comments
                        , user_name as user
                     from tsperson' 
                 ) AS f

我收到了这个错误:

“将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。”

我已经尝试过投射,但没有奏效。

我在这里和谷歌搜索了一些答案,但没有找到。

那么,有人可以帮助我吗?

4

1 回答 1

2

date您插入的表中的字段似乎正在使用datetime数据类型。您正在接收datetime2格式超出有效datetime类型范围的数据。

您可能必须更新表以使其date成为一种datetime2类型,或过滤传入数据以删除您无法支持的日期。


datetime日期范围:1753 年 1 月 1 日至 9999 年 12 月 31 日

datetime2日期范围:0001-01-01 到 9999-12-31

请参阅https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime2-transact-sql

于 2015-11-06T12:44:10.277 回答