【问题标题】:DateTime.Now differs a millisecondDateTime.Now 相差一毫秒
【发布时间】:2013-01-25 10:29:46
【问题描述】:

在我的应用程序中,我将 DateTime.Now 分配给新的 DateTime。然后我将其分配给一个值并将其写入数据库。但是当我从数据库中取回它并将变量与之前分配的新日期时间进行比较时,它会相差几毫秒。

有人知道为什么会这样吗?

例如

DateTime var1 = DateTime.Now;
Object1.DateTime = var1;

Database.SaveObject = var1

Object2 = Database.FindObjectById(objectId);

Assert.AreEqual(var1, Object2.DateTime);

【问题讨论】:

  • 您要将此值保存到的列的数据类型是什么?
  • 我们可以看看FindObjectById吗?
  • 数据库中的值是否正确保存?
  • 如果您使用 SQL Server 并存储在 datetime(不是 datetime2)中,请注意毫秒部分只能以 0、3 或 7 (IIRC) 结尾

标签: c# datetime time


【解决方案1】:

这很可能是 DB 的 datetime 列的精度问题:它没有足够的精度来存储长达一毫秒的时间。使用datetime时,时间部分为rounded to increments of .000, .003, or .007 seconds。

将列的类型切换为 datetime2 应该会有所帮助,因为它的分辨率是 100 纳秒。

【讨论】:

    【解决方案2】:

    您使用的是 MS SQL Server,日期时间仅精确到 3 毫秒,因此您会发现该数字四舍五入到最接近的 3 毫秒。

    见MSDN - TSQL DateTime

    如果您有 SQL2008 或更高版本,您可能需要使用 DateTime2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 2011-02-06
      • 2010-10-20
      • 2022-09-13
      相关资源
      最近更新 更多