何时在SQL Server中使用Money数据或十进制数据类型来存储成本核算值?

use*_*215 10 sql sql-server currency decimal sqldatatypes

存储成本核算值的首选数据类型是什么?金钱或十进制是什么程序性差异打赌他们?asp.net Data for Money数据类型的asp.net数据注释?

Rag*_*ull 13

Decimal type提供更高的精度来保存中间结果以获得您期望的结果.

money数据类型的缺点:

  1. 它是专有的,所以移植它是一种痛苦.它是几十年前众多"Sybase代码博物馆"的特色之一.还记得UNIX的早期版本吗?

  2. 当你不需要让那些说英语的人听起来像乡巴佬时,用方言编写代码.你最好使用DECIMAL(s,p),这样你就可以使用适当大小的列.

  3. 它在后端显示和格式化,带有逗号和美元符号.这违背了分层架构的目的.

  4. MONEY数据类型具有舍入错误.

参考:MSDN

  • 如果使用错误,它只有"舍入错误",即如果有人将"钱"乘以"钱",这当然是荒谬的.如果`money`乘以/除以一个适当的类型,导致表达式被提升到任意精度,那么根本就没有问题. (2认同)

Rah*_*thi 4

您应该更喜欢,decimal因为money数据类型不精确。

您还可以查看性能/存储比较: Aaron Bertrand 的MONEY 与 DECIMAL