【发布时间】:2019-08-22 10:15:19
【问题描述】:
我正在尝试使用 where 子句中的今天日期通过 LINKED SERVER 从 ORACLE 返回数据
代码:
DECLARE @var_date char(10)
SET @var_date = (SELECT CONVERT(DATE,GETDATE()))
SELECT TOP(25) * FROM OPENQUERY (OPICS, 'SELECT
CASE
WHEN OPICS.FXDH.BR = 10 THEN ''Botswana''
WHEN OPICS.FXDH.BR = 20 THEN ''Mozanmbique''
WHEN OPICS.FXDH.BR = 30 THEN ''Rwanada''
WHEN OPICS.FXDH.BR = 40 THEN ''Tanzania''
WHEN OPICS.FXDH.BR = 50 THEN ''Zambia''
WHEN OPICS.FXDH.BR = 60 THEN ''Zimbabwe''
END AS COUNTRY,
OPICS.FXDH.DEALNO,
to_char (OPICS.FXDH.DEALDATE,''YYYY-MM-DD'') as Deal_Date,
to_char (OPICS.FXDH.VDATE, ''YYYY-MM-DD'') as V_Date,
OPICS.FXDH.PS,
OPICS.FXDH.CCY,
OPICS.FXDH.CCYAMT,
OPICS.FXDH.CCYRATE_8,
OPICS.FXDH.CTRCCY,
to_char (OPICS.OPER.OPERNAME) as OPERNAME,
to_char (OPICS.CUST.CFN1) as CFN1,
to_char (OPICS.PROD.PDESC) as PDESC,
to_char (OPICS.PORT.PORTDESC) as Report_Description
FROM OPICS.FXDH FXDH
INNER JOIN OPICS.OPER OPER ON (FXDH.BR = OPER.BR) AND (FXDH.TRAD = OPER.OPER)
INNER JOIN OPICS.CUST CUST ON (FXDH.CUST = CUST.CNO)
INNER JOIN OPICS.PROD PROD ON (FXDH.PRODCODE = PROD.PCODE)
INNER JOIN OPICS.PORT PORT ON (FXDH.PORT = PORT.PORTFOLIO) AND (FXDH.BR = PORT.BR)
WHERE OPICS.FXDH.DEALDATE = TO_DATE(''2018-08-29'', ''YYYY-MM-DD'')
--dateString
AND OPICS.FXDH.BR = 10
--ORDER BY OPICS.FXDH.DEALDATE DESC');
上面的代码工作正常并返回值
有没有办法可以使用我的变量 @var_date 而不是硬拷贝我需要/想要的日期。
我尝试使用以下代码,但在使用代码时出错:
- OPICS.FXDH.DEALDATE = TO_DATE(@var_date, ''YYYY-MM-DD'')
- OPICS.FXDH.DEALDATE = CONVERT(DATETIME , @var_date, 120)
【问题讨论】:
-
您需要使用动态 sql。
OPENQUERY只接受文字字符串。 -
供以后参考;当您遇到错误时,请在您的问题中提及错误消息。
标签: sql-server oracle11g linked-server openquery