SQL Server 2012中的Oracle链接服务器 - 使用DATE列查询无效

时间:2017-01-16 08:07:53

标签: sql-server oracle11g sql-server-2012 sql-server-2008-r2 linked-server

This is my linked server which is Oracle linked to SQL Server 2012

查询:

SELECT DISTINCT RCPCODE
FROM SMC..ICWGHC.C_JOBINFOHISTORY 
WHERE UPDATE_DATETIME >= '2017-01-14 13:08:49.0000000' 
  AND UPDATE_DATETIME <= '2017-01-16 13:08:49.0000000'

SELECT DISTINCT RCPCODE 
FROM SMC..ICWGHC.C_JOBINFOHISTORY 
WHERE COMPLETE_DATETIME BETWEEN '2017-01-16 06:52:38.0000000' 
                            AND '2017-01-16 12:52:38.0000000'
ORDER BY COMPLETE_DATETIME DESC

BETWEEN和“&gt; =”的查询都不适用于Date列中的条件。

如果我使用此查询:

SELECT DISTINCT RCPCODE 
FROM SMC..ICWGHC.C_JOBINFOHISTORY

确实会返回数据。

我想使用BETWEEN条件过滤数据以检索数据,以便我可以使用日期时间进行排序。

1 个答案:

答案 0 :(得分:1)

我在SQL Server中遇到与Oracle链接服务器类似的情况。我没有使用你的语法,因为我们通常使用OPENQUERY来做这类事情,所以我想我会尝试一下。

隐式发生的字符串到目前为止转换存在某种问题。试试这个......

<!doctype html>
<html>
    <head>
         <title>spam</title> 
    </head>
    <body>
        <link rel = "stylesheet" href="main.css">
        <a href = ""><img src = ""></a>
        <h1><strong>Website name</strong></h1>
        
        <ul>
            <a href = "index.html">Home</a>
            <a href = "news.html">News</a>
        </ul>
        
        <p>
            Man stabbed in ...
        </p>
        
    </body>
</html>

请注意,我从日期/时间字符串中删除了尾随零。他们给我带来了麻烦。

以下是使用OPENQUERY对Oracle进行直通查询的方法......

SELECT DISTINCT RCPCODE 
FROM SMC..ICWGHC.C_JOBINFOHISTORY 
WHERE COMPLETE_DATETIME BETWEEN CONVERT(DATETIME, '2017-01-16 06:52:38', 121)
                            AND CONVERT(DATETIME, '2017-01-16 12:52:38', 121)
ORDER BY COMPLETE_DATETIME DESC

我再次删除了尾随零。

这些都适合你吗?

诺尔