我想动态地在SQL Server的openquery中传递一个日期函数。我的SQL Server连接到OleDB Oracle数据库。在openquery中的日期函数的语法是什么 - OleDB到SQL Server
当我运行使用基于Oracle的日期函数我的查询,我的查询运行,但没有返回数据:当我使用基于SQL Server日期函数我收到以下错误消息,运行查询
SELECT *
FROM OPENQUERY([SMA], 'SELECT B.SQL_DATE
FROM DIM_DATE B
WHERE B.SQL_DATE = current_DATE');
:
SELECT *
FROM OPENQUERY([SMA], 'SELECT B.SQL_DATE
FROM DIM_DATE B
WHERE B.SQL_DATE = ''GETDATE()''');
OLE DB提供程序 “OraOLEDB.Oracle” 链接服务器 “SMA” 返回消息 “ORA-01841:(全)年份必须-4713和+9999之间,而不是为0”。
我想我应该使用基于SQL Server的语法(而不是Oracle语法),但不知道current_DATE语句如何能够运行?
任何帮助将不胜感激!
'GETDATE()'正在被SQL Server解析器的日期表示所取代,因为评估不在字符串中,而current_DATE正在通过线路发送到连接的服务器并在那里被解析为sql。检查您的语言环境并确保日期值对齐。你可以强制一个特定的日期值,这听起来就是你需要在这里做的。 –
所以问题的一部分是我引用的日期字段是时间戳。如果我正在查询打开的查询之外的数据库,则可以使其工作:SELECT B.SQL_DATE FROM [SMA] .. [SMA]。[DIM_DATE] B WHERE B.SQL_DATE = Convert(date,GETDATE ()); 但是,我不明白找出需要使用哪些滴答,或者甚至可以通过openquery传递该函数。 –