C#DateTime到SQL DateTime失去精度

时间:2016-05-23 16:16:45

标签: c# sql-server datetime

有一个小问题,如果我将DateTime字段保存为SQL命令参数,它会失去精度,例如通常不到一毫秒。

e.g。参数的Value是: TimeOfDay {16:59:35.4002017}

但它的SqlValue是: TimeOfDay {16:59:35.4000000} 那就是保存在数据库中的时间。

现在我并没有特别困扰几微秒,但是当我比较数值时它会导致问题,它们显示为不相等。 (同样在一些比较中,直到运行时才知道该字段的类型,所以我甚至不确定我是否需要特殊的DateTime“舍入”逻辑)

添加参数时是否有任何简单的解决方法?

2 个答案:

答案 0 :(得分:8)

您正在使用DateTimedocumented与:

  

准确度:舍入为.000,.003或.007秒的增量

听起来你想要DateTime2

  

精度,比例:0到7位,精度为100ns。默认精度为7位数。

100ns精度与DateTime(1 tick = 100ns)相同

或者只是与差异一起生活,并在比较之前编写方法来舍入DateTime - 这可能最终会变得更简单。

答案 1 :(得分:3)

尝试使用datetime2,它具有更好的精确度。