在我的应用程序上,我将DateTime.Now分配给新的DateTime。然后我将它分配给一个值并将其写入数据库。但是当我从数据库中取回它并将变量与先前分配的新日期时间进行比较时,它会相差几毫秒。
任何人都知道为什么会这样?
E.g。
DateTime var1 = DateTime.Now;
Object1.DateTime = var1;
Database.SaveObject = var1
Object2 = Database.FindObjectById(objectId);
Assert.AreEqual(var1, Object2.DateTime);
答案 0 :(得分:7)
这很可能是DB datetime
列精度的问题:它没有足够的精度来存储时间长达一毫秒。使用datetime
时,时间部分为rounded to increments of .000, .003, or .007 seconds。
将列的类型切换为datetime2
应该会有所帮助,因为它的分辨率为100纳秒。
答案 1 :(得分:2)
您使用的是MS SQL Server,日期时间仅精确到3毫秒,因此您会发现该数字四舍五入到最接近的3毫秒。
如果您有SQL2008或更高版本,则可能需要使用DateTime2
。