我想将datetime值转换为我将从SQL Server 2008获得的值.
SQL Server将毫秒截断为3位数,因此我已经截断了毫秒数.但问题是,正如您在此处看到的:从XML转换为SQL Server datetime时,毫秒错误.SQL Server也存在精度问题.
考虑以下程序:
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();
Run Code Online (Sandbox Code Playgroud)
这将有以下输出:
dateTime.TimeOfDay = 10:21:54.4647370
sqlDateTime.TimeOfDay = 10:21:54.4630000
Run Code Online (Sandbox Code Playgroud)
对我来说奇怪的是.464737被舍入为.463.不应该四舍五入到.464吗?
我假设我没有在.NET代码中发现错误,所以问题是:
为什么它要做到这一点呢? 以及如何进行客户端舍入以完成SqlServer将要执行的操作?
作为旁注,我将这个日期时间保存到SQL Server数据库(在DateTime列中)并再次将其拉出来,结果为10:21:54.4670000.所以我真的很困惑.(我认为SqlDateTime会与SQL Server要做的事情相匹配.)
注意:因为我使用的是OData,所以我无法在SQL Server中使用DateTime2.