【问题标题】:How to insert date from SQL Server by using LinkedServer to Oracle in TimeStamp(6) format如何使用 LinkedServer 以 TimeStamp(6) 格式将日期从 SQL Server 插入到 Oracle
【发布时间】:2015-12-10 13:34:20
【问题描述】:

我有一些记录需要使用 LinkedServer 从 SQL Server 迁移到 Oracle 服务器。

SQL Server 中的日期:2014-12-31 11:16:39.000

应将日期转换为 Oracle 的以下格式:timestamp(6)

对于这个操作,我尝试了一些脚本。这些脚本在 Oracle 迁移的插入脚本之外成功运行。但是这些的任何结果都与 Oracle 日期类型无关。

执行的脚本:

CONVERT(varchar(24), BEGIN_DATETIME, 121) AS BEGIN_DATE` 

尝试了 20、21、120

CURRENT_TIMESTAMP AS BEGIN_DATE

CAST(BEGIN_DATETIME as timestamp)

TO_TIMESTAMP(BEGIN_DATE, 'YYYY-MM-DD HH24:MI:SS')

returns to_timestamp' 不是可识别的内置函数名

脚本返回错误:

链接服务器“LNK_DEV”的 OLE DB 提供程序“OraOLEDB.Oracle”为列“BEGIN_DATE”提供了无效的元数据。不支持该数据类型。

【问题讨论】:

    标签: sql-server oracle date timestamp linked-server


    【解决方案1】:

    我在迁移时没有在 SQL Server 中格式化或更改日期值就解决了我的问题。我尝试了不同类型的 LinkedServer 脚本。


    LinkedServer 的脚本类型 1

    INSERT INTO 
        [LNK_DEV]..[TEST].[DIAG_TABLE]
    SELECT
        [BEGIN_DATE] = CONVERT(varchar(24), BEGIN_DATE, 121) AS BEGIN_DATE
    FROM 
        TEST.DIAG_TABLE_SQLSERVER
    

    此脚本返回错误: 链接服务器“LNK_DEV”的 OLE DB 提供程序“OraOLEDB.Oracle”为列“BEGIN_DATE”提供了无效的元数据。该数据类型不受支持。


    LinkedServer 的脚本类型 2

    INSERT INTO
        OPENQUERY([LNK_DEV], 'SELECT BEGIN_DATE FROM TEST.DIAG_TABLE') 
    SELECT 
        BEGIN_DATE
    FROM 
        TEST.DIAG_TABLE_SQLSERVER
    

    此查询已成功完成,记录已正确移动到 Oracle 服务器。

    【讨论】:

    • 试过了,但还是不行,同样的错误“不支持数据类型。”
    猜你喜欢
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多