2015-12-10 80 views
2

我有一些記錄需要使用LinkedServer從SQL Server遷移到Oracle服務器。如何在TimeStamp(6)格式中使用LinkedServer向Oracle插入SQL Server日期

在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') 

回報TO_TIMESTAMP」是無法識別的內置函數名稱

而且腳本返回一個錯誤:

The OLE DB provider "OraOLEDB.Oracle" for linked server "LNK_DEV" supplied invalid metadata for column "BEGIN_DATE". The data type is not supported.

回答

0

我解決了我的問題,無需在遷移時在SQL Server中格式化或更改日期值。我嘗試了不同類型的LinkedServer腳本。


腳本類型-1 LinkedServer

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

此腳本返回錯誤:OLE DB提供程序 「OraOLEDB.Oracle」 鏈接服務器 「LNK_DEV」 提供的列無效的元數據「BEGIN_DATE」。數據類型不受支持。


腳本類型-2 LinkedServer

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

該查詢已成功完成,記錄已經正確地移動到Oracle服務器。

相關問題