如何使用TimeStamp(6)格式的LinkedServer到Oracle从SQL Server插入日期



我有一些记录必须使用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,21220

CURRENT_TIMESTAMP AS BEGIN_DATE
CAST(BEGIN_DATETIME as timestamp)
TO_TIMESTAMP(BEGIN_DATE, 'YYYY-MM-DD HH24:MI:SS')

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

脚本返回一个错误:

链接服务器"LNK_DEV"的OLE DB访问接口"OraOLEDB.Oracle"为列"BEGIN_DATE"提供了无效的元数据。不支持该数据类型。

我在迁移时没有在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 Server。

最新更新