SQL中“INTERVAL HOUR TO MINUTE”数据类型的聚合函数精度

时间:2011-11-06 19:58:45

标签: sql postgresql aggregate-functions precision

我正在运行一个非常小的数据库,其中包含一个表,其中包含一个包含INTERVAL HOUR TO MINUTE类型数据的列。虽然这意味着表只存储具有微小精度的时间间隔,但我使用的数据库系统(PostgreSQL)将在聚合函数(如AVG())上返回微秒精度的间隔。我可以依赖这种行为,或者将来数据库系统可能只返回精确度很小的值吗?其他DBMS在这方面的表现如何?

我问,因为表中的值不需要比精确度更精细,但是当我使用聚合函数时,我期望更高的精度。

1 个答案:

答案 0 :(得分:3)

avg()等聚合函数必须返回interval的一般形式,因为多个值的平均值可以介于两者之间。在将来的版本中,这肯定会更改。此外,数据类型在内部是相同的。只有最不重要的部分会被截断。

该行为与其他数据类型类似。如果您计算integer列的平均值,则会得到类型numeric的结果,该结果可以保存准确的结果。

如果您想要截断结果(而不是您的请求),您可以始终明确地转换为interval hour to minute以确定。

SELECT avg(i)::interval hour to minute from mytbl;

我不能多说其他RDBMS。也许可以填写其他答案吗?