SQL datetime的粒度

kat*_*roh 2 sql t-sql ado.net

我在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日期时间的粒度是多少,是否可以调整它以获得更多粒度?

Rem*_*yth 5

SQL Server精确到0,3和7毫秒的舍入增量http://msdn.microsoft.com/en-us/library/ms187819.aspx.您无法调整它以获得更多粒度.

.Net DateTime更精细 - 小于毫秒,它也可以包含刻度.断言测试时需要考虑到这一点.

如果需要更高的精度,可以在Sql Server中使用bigint而不是DateTime,并存储刻度数.(DateTime有一个构造函数,它接受Int64的刻度数.)

  • 对于旧的"datetime"来说,这是唯一的.多年来,有一个`datetime2`可以达到100纳秒的精度.http://msdn.microsoft.com/en-us/library/bb677335.aspx (2认同)