【发布时间】:2018-05-09 22:45:55
【问题描述】:
a question about a good schema for stock data 的回答推荐了这个架构:
Symbol - char 6
Date - date
Time - time
Open - decimal 18, 4
High - decimal 18, 4
Low - decimal 18, 4
Close - decimal 18, 4
Volume - int
此外,Postgres 文档说:
“如果您需要精确的存储和计算(例如货币金额),请使用数字类型(而非浮点类型)。”
我是 SQL 的新手,我希望这不是一个非常幼稚的问题。我想知道使用数字数据类型(尤其是 18,4)的必要性——这对我来说似乎有点矫枉过正。而“精确”并不是我真正要指定的东西,如果精确意味着纠正到小数点后 12 位。
我正在考虑使用真正的 10,2 作为货币列。这是我的理由。
典型的计算可能会将股票价格(2 位小数)与移动平均线(可能有多个小数位)进行比较,以确定哪个更大。我的理解是显示的平均值(以及任何计算结果)将四舍五入到小数点后 2 位,但计算将使用存储的内部数字的更高精度来执行。
所以这样的计算至少可以精确到小数点后 2 位,我认为这确实是我所需要的。
我在这里是不是有点离谱,使用真正的 10,2 数据类型是否可能对上述比较得出错误的答案?
我也欢迎任何其他 cmets,赞成或反对,关于使用数字数据类型。
提前致谢。
【问题讨论】:
标签: postgresql types