查询Netezza中的时间戳列

时间:2015-10-21 12:56:59

标签: sql netezza

我们在Netezza中有一个带有timestamp列的表。当我用查询选择计数时:

select count(*) from *table_name*

结果是X。

但是当我查询表格时

select count(*) from *table_name* where ts_col > t1

此处t1是表格本身的最小时间戳值,结果为Y。

现在Y比X小得多,我们没有ts_col作为NULL的任何值。理想情况下,X应该等于Y.这种行为可能是什么原因?

3 个答案:

答案 0 :(得分:1)

只是为了检查,这是您正在运行的查询吗?

select count(*)
from *table_name*
where ts_col > (select min(ts_col) from *table_name*);

答案 1 :(得分:0)

如果从期望零结果得到计数(*)的非零结果,我发现最好的办法是对结果集数据的样本进行目视检查。

改变您的查询:

select count(*) from table_name where ts_col > t1

select ts_col, t1 from table_name where ts_col > t1 limit 10

这里我假设t1是常量/文字。

此查询的结果将指向表格中您没有预料到的内容。如果ts_col没有被定义为NOT NULL,那么NULL可能是你的罪魁祸首,因为它们不会在布尔表达式中求值为TRUE。

否则,检查你得到的值,注意显示的类型或精度,并将其与你的t1值进行比较。

答案 2 :(得分:0)

因为这个查询

select count(*) from *table_name* where ts_col > t1

不等于此查询。

select count(*) from *table_name* where ts_col >= t1

如果没有空值,t1的值必须在表中精确X - Y次。

你评论了表中有空值的问题,所以我假设Y = X - (select count(1) from *table_name* where ts_col is null)