我在db中有一个datetime列,当我测试它时
DateTime dateTime = DateTime.Now;
state.LastUpdated = dateTime;
Assert.AreEqual(dateTime , state.LastUpdated);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Assert.AreEqual failed. Expected:<3/2/2011 9:52:32 AM>. Actual:<3/2/2011 9:52:00 AM>.
SQL日期时间的粒度是多少,是否可以调整它以获得更多粒度?
SQL Server精确到0,3和7毫秒的舍入增量http://msdn.microsoft.com/en-us/library/ms187819.aspx.您无法调整它以获得更多粒度.
.Net DateTime更精细 - 小于毫秒,它也可以包含刻度.断言测试时需要考虑到这一点.
如果需要更高的精度,可以在Sql Server中使用bigint而不是DateTime,并存储刻度数.(DateTime有一个构造函数,它接受Int64的刻度数.)