sql - 在 SQL Server 中存储日期值的货币数据类型?

标签 sql sql-server tsql

我正在调查我刚刚继承的数据库的一些性能问题。我可以看到有很多隐式转换,因为查询将货币数据类型转换为日期。看起来几乎所有日期字段都具有货币数据类型。

有人能告诉我为什么有人会为日期使用货币数据类型的充分且有效的理由吗?

谢谢!

最佳答案

这种做法绝对没有充分和正当的理由。

datetimemoney 都是8字节。 datetimedate 保留了 4 个字节,为 time 保留了 4 个字节。

money 的范围从 -922,337,203,685,477.5808922,337,203,685,477.5807。当从 money 转换为 datetime 时,整数部分被视为自 1900-01-01 以来的天数,小数部分被视为百分比的一天。

这意味着您在 time 部分失去了精度(每个 0.0001 增量 = 8.640 秒)并在 中获得无用的额外比例code>date 部分是因为能够存储太大而无法成功 castdatetime(最大范围为 9999 AD)

如果可能,修复架构。

关于sql - 在 SQL Server 中存储日期值的货币数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210179/

相关文章:

php - 有人可以告诉我这个查询有什么问题吗?

php - mysqli 命令是否也可用于 mssql 服务器?

sql - 当值基于另一列中的值时,如何将多个 SELECT 语句压缩为一个?

sql-server - 超过 130 的字符长度不显示在列中

mysql - SQL - 为每列创建一行并重复 ID

MySQL 语法 : can't create table

c# - 如何协调 LINQ 中的第一条和最后一条记录

PHP - SQL - DELETE 查询不起作用

mysql - 如何使用spark sql比较两个表?

sql-server - 使用 T-SQL 删除字段中的所有撇号