如何使用 LinkedServer 以 TimeStamp(6) 格式从 SQL 服务器插入日期到 Oracle
How to insert date from SQL Server by using LinkedServer to Oracle in TimeStamp(6) format
我有一些记录要使用 LinkedServer 从 SQL 服务器迁移到 Oracle 服务器。
SQL服务器中的日期: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' 不是可识别的内置函数名称
并且脚本 return 出错:
The OLE DB provider "OraOLEDB.Oracle" for linked server "LNK_DEV" supplied invalid metadata for column "BEGIN_DATE". The data type is not supported.
我在迁移时没有格式化或更改 SQL 服务器中的日期值就解决了我的问题。我尝试了不同类型的 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
此脚本 returns 错误: 链接服务器的 OLE DB 提供程序 "OraOLEDB.Oracle" "LNK_DEV" 提供的元数据无效列 "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 服务器。
我有一些记录要使用 LinkedServer 从 SQL 服务器迁移到 Oracle 服务器。
SQL服务器中的日期: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' 不是可识别的内置函数名称
并且脚本 return 出错:
The OLE DB provider "OraOLEDB.Oracle" for linked server "LNK_DEV" supplied invalid metadata for column "BEGIN_DATE". The data type is not supported.
我在迁移时没有格式化或更改 SQL 服务器中的日期值就解决了我的问题。我尝试了不同类型的 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
此脚本 returns 错误: 链接服务器的 OLE DB 提供程序 "OraOLEDB.Oracle" "LNK_DEV" 提供的元数据无效列 "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 服务器。