可以在MySQL中存储小数(22,2)的钱吗?

时间:2011-03-05 04:35:11

标签: mysql sqldatatypes

在MySQL中存储货币值decimal(22,2)是否可以?我正在为虚拟世界编写一个基于Web的市场和广告网络。

4 个答案:

答案 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)会更好。