SQL Server 2012 中的 Oracle Linked Server - 使用 DATE 列的查询不起作用

Oracle Linked Server in SQL Server 2012 - query with DATE column not working

查询:

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 和“>=”的查询均不适用于 Date 列中的条件。

如果我使用这个查询:

SELECT DISTINCT RCPCODE 
FROM SMC..ICWGHC.C_JOBINFOHISTORY

它处理 return 数据。

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

我在 SQL 服务器中的 Oracle 链接服务器也有类似情况。我没有使用你的语法,因为我们通常使用 OPENQUERY 来处理这种事情,所以我想我会试一试。

隐式发生的字符串到日期的转换存在某种问题。试试这个...

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

请注意,我从 date/time 字符串中删除了尾随零。他们给我添麻烦了。

以下是使用 OPENQUERY 对 Oracle 执行直通查询的操作...

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

我再次删除了尾随零。

这些对你有用吗?

诺埃尔