我需要将针对MSSQL-Server的SQL语句转换为Informix的等价语句。不幸的是,我无法访问其中一个,也没有访问其他DBMS,所以我无法对其进行测试。
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 :(得分:2)
首先,您不需要将datetime转换为字符串。数据库很好地比较了日期时间值。转换为文本将使您的查询更慢,并且不清楚它是否能够使用索引。
在Informix中,datetime(我使用类型datetime year to second
)可以作为字符串文字。
在Informix中没有ISNULL()
函数,但它们具有NVL()
函数。
所以我会将WHERE
条件写为:
WHERE timestamp1 > NVL(timestamp2, '1900-11-11 00:00:00');