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

时间:2015-07-09 18:18:25

标签: date comparison netezza

我正在尝试运行一个简单的查询,该查询排除表中所有大于日期列最大值的记录。 e.g。

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

此查询应返回零记录并执行此操作。但是,当我尝试运行内部查询时,我得到了这个:

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

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

1 个答案:

答案 0 :(得分:1)

这里的问题是您将DATE与TIMESTAMP混淆。 tipoff在您的标题中,引用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)