考虑以下程序:
DateTime dateTime = new DateTime(634546165144647370);
SqlDateTime sqlDateTime = new SqlDateTime(dateTime);
Console.WriteLine("dateTime.TimeOfDay = " + dateTime.TimeOfDay);
Console.WriteLine("sqlDateTime.TimeOfDay = " + sqlDateTime.Value.TimeOfDay);
Console.ReadLine();
这将有以下输出:
dateTime.TimeOfDay = 10:21:54.4647370
sqlDateTime.TimeOfDay = 10:21:54.4630000
对我来说奇怪的是 0.464737 四舍五入为 0.463。难道不应该四舍五入到 0.464 吗?
我假设我没有在 .NET 代码中发现错误,所以问题是:
为什么它会变成这样?我怎样才能获得客户端舍入来完成 SqlServer 要做的事情?
作为旁注,我将此日期时间保存到 SQL Server 数据库(在 DateTime 列中),然后再次将其取出,结果为10:21:54.4670000。所以我真的很困惑。 (我认为 SqlDateTime 会与 SQL Server 要做的事情相匹配。)
Note:因为我使用的是 OData,所以无法在 SQL Server 中使用 DateTime2。
SQL服务器DATETIME
精度为 3.33ms - 因此,您无法获得所有可能的值,但有很好的机会.464
就是这样的一个值。
在 SQL Server 2008 上,您可以使用DATETIME2
or TIME(x)
精度为 100ns 的数据类型 - 对于“常规”使用来说应该足够了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)