在MySQL中存储货币值decimal(22,2)
是否可以?我正在为虚拟世界编写一个基于Web的市场和广告网络。
答案 0 :(得分:17)
如果有人有性生活费怎么办?!?这个领域不可能包含这一大堆 杰明斯....
但严肃地说,SQL Server和PostgreSQL有money数据类型,Access有货币数据类型。 Oracle和MySQL都没有。
此主题 - Best data type for storing currency values in a MySQL database
然而出于某种原因推荐4位有效数字,我想如果您需要小数分(股票等)。
如果没有用户可以超过性价比(严肃性),并且您不需要计算存储的分数,您的格式应该没问题。
答案 1 :(得分:6)
你应该问问自己“使用我的程序,有多少钱会有什么用?”和“我要求我的小数位数精确到什么程度?”
如果你只需要处理十亿,那么看起来(10,2)就足够了。如果你想要更准确的利息计算,也许你想要(10,5)。如果你只是跟踪工资和年薪,似乎(7,2)就足够了(我想成为7部分,谢谢!)
在不知道数据目的的情况下,很难回答这个问题。我能给你的只是你要问自己的问题。
答案 2 :(得分:2)
如果要在数据库中存储资金,可以使用int类型,但存储在最小值(美元分)中,然后在需要时除以100。它会更快地运作。
答案 3 :(得分:0)
@Orbit在此页面上接受的答案提到SQL Server具有money
数据类型。
但是,根据这个答案(Should you choose the MONEY or DECIMAL(x,y) datatypes in SQL Server?),在SQL Server中存储货币值的更好选择是decimal(19,4)
- 这在MySQL中也可用。
根据我的理解,由于浮点舍入错误,在money
中执行SQL Server
类型的计算时应该小心。并且它可以间接使用decimal(19,4)
类型。
所以... decimal(22,2)
类型可以存储货币价值......但正如许多人似乎建议的那样,decimal(19,4)
会更好。