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')
我再次删除了尾随零。
这些对你有用吗?
诺埃尔
查询:
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')
我再次删除了尾随零。
这些对你有用吗?
诺埃尔