2010-08-02 47 views
1

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

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

我知道这个字段是在Informix端索引的。如果它帮助我链接的表格来自Avaya CMS,并且它通过OpenLink ODBC驱动程序进行链接。

编辑:

据我知道这是Informix Dynamic Server的2000,它是在Solaris上。该列出现为DATE数据类型,它是正确的。我试过通过标准'2010-08-03 00:00:00','2010-08-03',CONVERT(日期,'2010-08-03')以及其他一些变体。当数据返回到SQL服务器时,格式为yyyy-mm-dd。

当我查看执行计划时,我可以看到带有所有其他条件的远程查询,后面跟着只有rowdate字段的过滤器。

我知道rowdate被索引,并且正如我们在其他应用程序中使用它(业务对象和MS Access)司机正常通信,信息和他们没有问题

+0

哪个版本的Informix在哪个平台上? 'rowdate'的类型是什么?据猜测,这是DATE,但它可能是DATETIME的变体之一,例如DATETIME YEAR TO DAY或DATETIME YEAR TO SECOND。驱动程序是否以相同的方式处理同一类型的其他列? **表面上看,这听起来像是'客户'一方面的问题;也就是说,如果驱动程序不发送标准,服务器将无法使用它。您可能想要了解如何执行SET EXPLAIN ON,以便您可以看到Informix DBMS将SQL视为什么,以便与您认为应该看到的内容进行比较。 – 2010-08-02 19:00:23

回答

0

我设法看着办吧但它是有史以来最奇怪的事情。我沿着不同格式传递日期的路线。我的默认是使用正常的YYYY-MM-DD当然没有工作,所以我尝试了YYYY-MMM-DD,仍然没有。在经历了大量的组合之后,我发现了一个可以工作的Mmm-DD-YY,它必须完全相同! SEP-21-2010不会工作,但Sep-21-2010。

我不知道这是否只是一个奇怪的从Informix或驱动程序中挂起的东西,无论如何它的工作原理。

在旁注中有人注意到来自美国的人写日月,日年有多奇怪?停下来想一想,你说2410号码是“四百,十,两千”吗?关于它的最好的部分是试着问问你自己,美国独立日是哪一天?大多数美国人说:“这很容易让你变得像7月4日那样”,这是他们独立日期的唯一日期。我会离开它的SO社区看到讽刺低于

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。