Netezza 中的日期比较无法正常工作

Date comparison in Netezza does not work properly

我正在尝试 运行 一个简单的查询,该查询从 table 中排除所有大于日期列最大值的记录。例如

SELECT * FROM TABLE1
WHERE LD_TMSTMP > (SELECT MAX(LD_TMSTMP) FROM TABLE1)
===========================================
0 records returned

这个查询应该 return 零记录并且它做到了。但是,当我尝试 运行 内部查询时,我得到了这个:

SELECT MAX(LD_TMSTMP) FROM TABLE1
===========================================
2015-04-22 06:42:32

当我把这个值放在同一个查询中时,我得到了 131 条记录

SELECT * FROM TABLE1
WHERE LD_TMSTMP > TO_DATE('2015-04-22 06:42:32','YYYY-MM-DD HH24:MI:SS')
===========================================
131 records returned

有谁知道为什么会这样?当 return 以字符串格式输入日期时,我是否需要使用更好的精度值?

这里的问题是您混淆了 DATE 和 TIMESTAMP。提示在您的标题中,它引用了 DATE,但您的数据显示您显然正在处理 TIMESTAMP。

从你的 SQL 我们可以看到你使用 TO_DATE 而不是 TO_TIMESTAMP 来转换你的字符表示,这毫不奇怪地给了我们一个日期。

TESTDB.ADMIN(ADMIN)=> select TO_DATE('2015-04-22 06:42:32','YYYY-MM-DD HH24:MI:SS');
  TO_DATE
------------
 2015-04-22
(1 row)

TESTDB.ADMIN(ADMIN)=> select to_timestamp('2015-04-22 06:42:32','YYYY-MM-DD HH24:MI:SS');
    TO_TIMESTAMP
---------------------
 2015-04-22 06:42:32
(1 row)