我正在运行一个非常小的数据库,其中包含一个表,该表的列包含INTERVAL HOUR TO MINUTE
类型的数据。虽然这意味着表将只存储分钟精度的时间间隔,但我正在使用的数据库系统(PostgreSQL)将在AVG()
等聚合函数上返回微秒精度的时间间隔。我可以依赖这个行为吗,或者将来数据库系统是否可能只以分钟精度返回值?其他DBMS在这方面的表现如何?
我之所以这样问,是因为表中的值不需要比分钟精度更高的精度,但我希望在使用聚合函数时有更高的精度。
发布于 2011-11-06 20:28:05
像avg()
这样的聚合函数必须返回interval
的一般形式,因为多个值的平均值可能介于两者之间。这肯定不会在未来的版本中变化。而且,数据类型在内部是相同的。只有最不重要的部分会被截断。
其行为与其他数据类型类似。如果计算integer
列的平均值,则会得到numeric
类型的结果,该结果可以包含确切的结果。
如果您希望截断结果(而不是您的请求),则始终可以显式转换为interval hour to minute
以确保这一点。
SELECT avg(i)::interval hour to minute from mytbl;
关于其他RDBMSes,我不能说太多。也许可以在这里填写其他答案?
https://stackoverflow.com/questions/8029958
复制