我正在调查我刚刚继承的数据库的一些性能问题。我可以看到有很多隐式转换,因为查询将货币数据类型转换为日期。看起来几乎所有日期字段都具有货币数据类型。
有人能告诉我为什么有人会为日期使用货币数据类型的充分且有效的理由吗?
谢谢!
最佳答案
这种做法绝对没有充分和正当的理由。
datetime
和money
都是8字节。 datetime
为 date
保留了 4 个字节,为 time
保留了 4 个字节。
money
的范围从 -922,337,203,685,477.5808
到 922,337,203,685,477.5807
。当从 money
转换为 datetime
时,整数部分被视为自 1900-01-01
以来的天数,小数部分被视为百分比的一天。
这意味着您在 time
部分失去了精度(每个 0.0001
增量 = 8.640
秒)并在 中获得无用的额外比例code>date
部分是因为能够存储太大而无法成功 cast
到 datetime
(最大范围为 9999 AD
)
如果可能,修复架构。
关于sql - 在 SQL Server 中存储日期值的货币数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210179/