2010-08-02 19 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。