4

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

任何人都知道为什么会发生这种情况?

例如

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

Database.SaveObject = var1

Object2 = Database.FindObjectById(objectId);

Assert.AreEqual(var1, Object2.DateTime);
4

2 回答 2

7

这很可能是 DBdatetime列的精度问题:它没有足够的精度来存储长达一毫秒的时间。使用datetime时,时间部分会以 0.000、0.003 或 0.007 秒的增量四舍五入

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

于 2013-01-25T10:32:59.777 回答
2

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

请参阅MSDN - TSQL 日期时间

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

于 2013-01-25T10:32:28.743 回答