在两个不同的 SQL 服务器上我运行以下查询:
declare @myDatetime as datetime = '2017-07-04 23:42:32.400'
select CAST(@myDatetime AS DECIMAL(20,5))
我得到两个不同的结果:
42918.98788 和 42918.98787
如果我转换为 DECIMAL(20,6) 它工作正常(42918.987875),但假设我需要将其放入十进制(20,5)。
在哪里可以找到舍入时行为差异的根源?是否有一个选项可以将最后 5 名向上或向下舍入?它是一种语言环境、国际环境、排序规则还是其他?
是否是不同版本的 SQL(12.0.5000.0 与 13.0.4202.2)?
根据这份文件:https://support.microsoft.com/en-us/help/4010261/sql-server-2016-improvements-in-handling-some-data-types-and-uncommon https://support.microsoft.com/en-us/help/4010261/sql-server-2016-improvements-in-handling-some-data-types-and-uncommon
微软对其处理一些“不常见”转换的方式进行了一些更改:
SQL Server 2016 includes improvements to the precision of the following operations under compatibility level 130:
Uncommon data type conversions. These include the following:
float/integer to/from datetime/smalldatetime
real/float to/from numeric/money/smallmoney
float to real
所以我怀疑这可能是我们在这种特定情况下对不同舍入所看到的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)