【问题标题】:SQL SERVER ERROR: "The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value." (informix to sql server)SQL SERVER 错误:“将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。” (informix 到 sql 服务器)
【发布时间】:2015-11-06 12:35:59
【问题描述】:

我有一个 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 数据类型导致值超出范围。”

我已经尝试过投射,但没有成功。

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

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

【问题讨论】:

  • 这可能会有所帮助 - stackoverflow.com/questions/7386360/…
  • Paddy 的答案得到了更多的解释,并且对我来说如何解决问题有非常明确的替代方案。无论如何,谢谢。

标签: sql-server informix linked-server openquery datetime2


【解决方案1】:

您要插入的表中的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

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 2011-11-15
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多