Sql server 如何使用LinkedServer以时间戳(6)格式插入SQL Server到Oracle的日期
我有一些记录必须使用LinkedServer从SQL server迁移到Oracle server SQL Server中的日期:Sql server 如何使用LinkedServer以时间戳(6)格式插入SQL Server到Oracle的日期,sql-server,oracle,date,timestamp,linked-server,Sql Server,Oracle,Date,Timestamp,Linked Server,我有一些记录必须使用LinkedServer从SQL server迁移到Oracle server SQL Server中的日期:2014-12-31 11:16:39.000 对于Oracle,日期应转换为以下格式:时间戳(6) 对于这个操作,我尝试了一些脚本。这些脚本在用于Oracle迁移的插入脚本之外成功地工作。但这些结果与Oracle日期类型无关 执行的脚本: CONVERT(varchar(24), BEGIN_DATETIME, 121) AS BEGIN_DATE` 试过20、
2014-12-31 11:16:39.000
对于Oracle,日期应转换为以下格式:时间戳(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')
返回到_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
INSERT INTO
OPENQUERY([LNK_DEV], 'SELECT BEGIN_DATE FROM TEST.DIAG_TABLE')
SELECT
BEGIN_DATE
FROM
TEST.DIAG_TABLE_SQLSERVER
此脚本返回错误:链接服务器“LNK\u DEV”的OLE DB提供程序“OraOLEDB.Oracle”为列“BEGIN\u DATE”提供了无效元数据。不支持该数据类型
用于LinkedServer的脚本类型2
INSERT INTO
[LNK_DEV]..[TEST].[DIAG_TABLE]
SELECT
[BEGIN_DATE] = CONVERT(varchar(24), BEGIN_DATE, 121) AS BEGIN_DATE
FROM
TEST.DIAG_TABLE_SQLSERVER
INSERT INTO
OPENQUERY([LNK_DEV], 'SELECT BEGIN_DATE FROM TEST.DIAG_TABLE')
SELECT
BEGIN_DATE
FROM
TEST.DIAG_TABLE_SQLSERVER
此查询已成功完成,记录已正确移动到Oracle Server。尝试过,但仍无法正常工作相同错误“不支持数据类型”