2014-04-23 70 views
1

我需要將針對MSSQL-Server的SQL語句轉換爲Informix的等價語句。不幸的是,我無法訪問一個,也沒有其他DBMS,所以我無法測試它。將MSSQL轉換爲Informix

的MS-SQL語句如下:

SET DATEFORMAT ymd; 
SELECT 
    ATTRIBUTE1, 
    ATTRIBUTE2, 
    TIMESTAMP1, 
    TIMESTAMP2, 
    ATTRIBUTE3 
FROM MY_TABLE 
WHERE convert(DATETIME,TIMESTAMP1,104) >= ISNULL(convert(DATETIME,TIMESTAMP2,104), convert(DATETIME,'11.11.1900',104)); 

誰能幫助我在這裏嗎?

非常感謝您提前。

+0

你確定你必須比較被轉換爲字符串值在'DD.MM.YYYY'格式的日期時間值?這樣你會比較幾天然後幾個月,然後幾年。它會不同於將日期與其他日期進行比較,這與YYYY-MM-DD格式的字符串比較類似? –

回答

2

起初,您不需要將datetime轉換爲字符串。數據庫很好地比較了日期時間值。轉換爲文本會使查詢速度變慢,並且不清楚它是否能夠使用索引。

Informix datetime(我使用類型datetime year to second)可以作爲字符串文字。

在Informix中沒有ISNULL()函數,但它們有NVL()函數。

所以我會寫WHERE條件爲:

WHERE timestamp1 > NVL(timestamp2, '1900-11-11 00:00:00'); 
相關問題