如下代码
DateTime d=DateTime.Now();SqlCommand cmd=new .....();
cmd.parameters["UpdateTime"].value=d;
cmd.execute();
采用如上语句更新数据库中的时间,共更新5条数据按理,5条数据的UpdateTime都应该一样,因为值都来源于d但实际上,却不一样,如2011-05-22 19:41:27.420  2011-05-22 19:41:27.373...为什么会是这样的结果?SqlServer就算时间精度再高,但同一样变量d的值,也不能有不一样的结果啊。和没打Sql SP4补丁有关系吗?

解决方案 »

  1.   

    你可以将 数据库中的 UpdateTime字段设置默认值 getdate()
    代码中不给UpdateTime付值
    试试 看
      

  2.   

    可以考虑直接使用sql的getdate(),这样精确更高一些
      

  3.   

    是一条语句更新5条数据还是5条语句更新5条数据?
    --------------------------------------------是5条语句更新的。
    之所以用DateTime.Now而不用getdate,就是想这5条数据UpdateTime的值保持一模一样,怕用了getdate后,语句执行的时间差导致gatedate的值不一致,没想到用DateTime.Now存在变量里,UpdateTime的值依然会有毫秒级的误差。
    有误差可以理解,关键是DateTime.Now已经保存在变量d中,按理是不会改变的,奇怪啊
      

  4.   

    时间是一样的,只是对于datetime类型来说,精度的问题。
      

  5.   

    你可以将 数据库中的 UpdateTime字段设置默认值 getdate()
    代码中不给UpdateTime付值
    试试 看
      

  6.   

    5条语句更新时,是不是每一次都重新执行了 DateTime d=DateTime.Now(); 如果每次都重新执行了,那么时间是会不一样的
      

  7.   

    那就看你的DateTime d=DateTime.Now;是在什么时候赋值的,如果是在循环中赋的话肯定会不一样,应该放到循环外
      

  8.   

    DateTime d=DateTime.Now采用统一赋值就行了