Я создал процедуру в SQL Server 2012 с целью извлечения вчерашних данных из таблицы Oracle и вставки их в таблицу SQL Server с помощью OPENQUERY, например:
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
DROP TABLE #Temp
SELECT
LEAD(CONVERT(VARCHAR, CONVERT(DATETIME, '01-JAN-1970 03:00:00', 120) + [DAT_CLOSEDATE] / (24 * 60 * 60), 120), 1, CONVERT(VARCHAR, CONVERT(DATETIME, '01-JAN-1970 03:00:00', 120) + [DAT_CLOSEDATE] / (24 * 60 * 60), 120)) OVER (PARTITION BY [TXT_TICKETNUMBER] ORDER BY [DAT_CLOSEDATE]) AS [CLOSE_DATE]
INTO
#Temp
FROM
OPENQUERY(ORACLE_DB, 'SELECT DAT_CLOSEDATE, TXT_TICKETNUMBER FROM SCHEME.TABLE')
WHERE
[DAT_CLOSEDATE] = DATEADD(d, -1, GETDATE())
Все работает какожидается, но проблема в синтаксисе SQL Server находится в предложении WHERE
, поэтому я хочу сделать это внутри OPENQUERY
, учитывая следующее:
DAT_CLOSEDATE
mustдинамически извлекать данные вчерашнего дня (сегодня-1)
Тип данных столбца DAT_CLOSEDATE
в Oracle: FLOAT
и DATETIME
в SQL Server
Я ожидаю, что синтаксис OPENQUERY
будет выглядеть примерно так:
OPENQUERY(ORACLE_DB, 'SELECT DAT_CLOSEDATE, TXT_TICKETNUMBER
FROM SCHEME.TABLE
WHERE [DAT_CLOSEDATE] = DATEADD(d, -1, GETDATE())')