代码之家  ›  专栏  ›  技术社区  ›  Kevin Ross

MS SQL Server中的链接Informix表是否忽略条件?

  •  1
  • Kevin Ross  · 技术社区  · 14 年前

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

    它似乎不通过rowdate字段上的任何条件,但在所有其他字段上都通过。

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

    编辑:

    据我所知,它是InformixDynamicServer2000,在Solaris上。该列显示为正确的日期数据类型。我尝试过通过标准,如__2010-08-03 00:00:00_,_2010-08-03_,convert(date,__2010-08-03_),以及其他一些变体。当数据返回到SQL Server时,其格式为YYYY-MM-DD。

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

    我知道rowdate是索引的,而且驱动程序在我们在其他应用程序(Business Objects和MS Access)中使用该信息时通常会进行通信,而且它们没有问题。

    2 回复  |  直到 12 年前
        1
  •  0
  •   Kevin Ross    14 年前

    我设法弄明白了,但这是有史以来最奇怪的事情。我按照不同的格式传递日期。我的默认设置是使用正常的YYYY-MM-DD,当然不起作用,所以我尝试了YYYY-MMM-DD,但仍然没有。经过多次组合后,我发现了一个有效的MMM-DD-YY,它必须是正的!2010年9月21日不行,但2010年9月21日不行。

    我想知道这是否只是一个奇怪的挂断,从Informix或在驱动程序什么的,无论如何它工作。

    旁注:有没有人注意到,美国人写的日期是月、日、年是多么奇怪?停下来想一想,你说2410这个数字是400,10,2000_?最好的一点是试着问问自己,美国独立日是哪一天?大多数美国人都说那很容易,利米人这是7月4日嗯,月(年)日,他们唯一说正确的日期是他们获得独立的日期。我将把这件事留给SO社区来看看其中的讽刺意味。

        2
  •  0
  •   Peter O. Manuel Pinto    12 年前

    下面的查询示例:

    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提取准确的数据。