我在db中有一个datetime列,当我测试设置它时
DateTime dateTime = DateTime.Now;
state.LastUpdated = dateTime;
Assert.AreEqual(dateTime , state.LastUpdated);
我收到以下错误
Assert.AreEqual failed. Expected:<3/2/2011 9:52:32 AM>. Actual:<3/2/2011 9:52:00 AM>.
SQL日期时间的粒度是多少,是否可以调整它以获得更精细的数据?
答案 0 :(得分:5)
SQL Server精确到0,3和7毫秒http://msdn.microsoft.com/en-us/library/ms187819.aspx的舍入增量。您无法调整它以获得更多粒度。
.Net DateTime更精细 - 小于毫秒,它也可以包含刻度。在断言测试时,您需要将此考虑在内。
如果需要更高的精度,可以在Sql Server中使用bigint而不是DateTime,并存储刻度数。 (DateTime有一个构造函数,它接受Int64的刻度数。)
答案 1 :(得分:3)
使用datetime2,其精度高达100纳秒。 msdn.microsoft.com/en-us/library/bb677335.aspx
@Remus在评论中注明,将其作为后代的答案发布。
答案 2 :(得分:2)
SQL日期时间可以表示低至几分之一秒的日期,并且根据:http://msdn.microsoft.com/en-us/library/ms187819.aspx:datetime values are rounded to increments of .000, .003, or .007 seconds