1

我在 MS SQL Server 2008r2 中的链接 Informix 表有问题。当我查询此表时,它似乎忽略了我传递给它的一些标准,但没有忽略其他标准。例如,如果我在 rowdate 字段上设置条件,则执行计划的远程查询部分不会显示任何 WHERE 子句,但如果我将条件放在另一个字段(例如 ACD)上,它会显示。

它似乎没有通过 rowdate 字段上的任何标准,但在所有其他字段上都没有。

我知道该字段在 Informix 端被索引。如果它有助于我链接的表来自 Avaya CMS,它是通过 OpenLink ODBC 驱动程序链接的。

编辑:

据我所知,它是 Informix Dynamic Server 2000,它在 Solaris 上。该列作为正确的 DATE 数据类型出现。我尝试将标准传递为 '2010-08-03 00:00:00'、'2010-08-03'、CONVERT(date,'2010-08-03') 和更多变体。当数据返回到 SQL Server 时,其格式为 yyyy-mm-dd。

当我查看执行计划时,我可以看到带有所有其他条件的远程查询,然后是仅针对 rowdate 字段的过滤器。

我知道 rowdate 已编入索引,并且驱动程序通常会在我们在其他应用程序(业务对象和 MS Access)中使用它时传达该信息,并且它们没有问题

4

2 回答 2

0

我设法弄清楚了,但这是有史以来最奇怪的事情。我走上了以不同格式传递日期的路线。我的默认设置是使用正常的 YYYY-MM-DD,这当然不起作用,所以我尝试了 YYYY-MMM-DD,仍然没有。在经历了很多组合之后,我找到了一个有效的 Mmm-DD-YY,它必须是这样的!2010 年 9 月 21 日将不起作用,但 2010 年 9 月 21 日。

我想知道这是否只是 Informix 的一个奇怪的挂起或驱动程序中的某些东西,无论如何它是有效的。

顺便说一句,有没有人注意到美国人写日期月份,日期年份是多么奇怪?停下来想一想,你说2410这个数字是“四百、十、两千”吗?最好的部分是试着问自己,美国独立日是哪一天?大多数美国人说“这很容易,你这个人,现在是 7 月 4 日”嗯,日月(年),他们说的唯一正确的日期是他们获得独立的日期。我将把它留给 SO 社区来看看其中的讽刺意味

于 2010-09-21T07:23:26.217 回答
0

下面的示例查询:

select *
from OPENQUERY (AVAYA, 'select row_date,starttime,intrvl,acd from root.hagent where
row_date = ''NOV-22-2012'' and acd = 1 and split = 1 and starttime = 1900')

顺便说一句,我设法通过 MMM-DD-YYYY 和 Mmm-DD-YYYY 提取了准确的数据。

于 2012-11-23T19:27:20.563 回答