【发布时间】:2011-10-19 15:39:30
【问题描述】:
我有一个这样生成的日期时间:
DateTime myDateTime = DateTime.Now;
然后,我使用实体框架将其存储在数据库中(在DateTime 类型的列中)。然后我使用 OData(WCF 数据服务)检索它。
当它进入 TimeOfDay 值是:09:30:03.0196095
当它出来时,TimeOfDay 值为:09:30:03.0200000
这样做的最终结果是,毫秒在保存之前被视为 19,在重新加载后被视为 20。
所以当我稍后在我的代码中进行比较时,它会在应该相等的地方失败。
SQL Server 的精度是否不如 .NET?还是实体框架或 OData 搞砸了?
我将截断毫秒(我真的不需要它们)。但我想知道为什么会这样。
【问题讨论】:
-
你是怎么比较的?
-
这是不同的精度。请参阅旁边的相关问题。
-
您使用的是哪个版本的 SQL Server?如果 2008
datetime2精度更高。 -
仅仅截断 ms 可能还不够。您可以将
09:30:03.999999舍入为09:30:04.000000 -
@Joel - 在我第一次将它保存在数据库中之前,我将缩短几毫秒。这样第二次就会匹配。
标签: c# .net sql-server