2012-10-22 37 views
0

當調用.NET中的DateTime的CompareTo()時,它是否將DateTime對象上的刻度與另一個上的刻度進行比較?比較有多精確?我從sql數據庫中獲取datetime2(7)值,並希望確保比較是按照方式進行的。.NET中DateTime的CompareTo()的精確性

回答

3

是的,蜱是比較。這是怎麼Equals在日期時間結構來實現ulong類型的

public bool Equals(DateTime value) 
{ 
    return (this.InternalTicks == value.InternalTicks); 
} 

InternalTicks回報領域。因此,DateTimes的比較與long類型的比較具有相同的精度。單個刻度代表100納秒。

Btw數據庫可以以不同的精度存儲時間 - 一些準確性可能會丟失。但有一個竅門 - 您可以將Ticks值保存到數據庫。在這種情況下,您可以稍後恢復完全相同的.net DateTime對象。

+0

你在最後一段中說的很酷。謝謝! – Mark13426

0

數據庫的精度與DateTime對象的精度無關。 DateTime對象存儲100ns的內部滴答計數。所以這非常精確。是的,如果值與1滴答不同,則CompareTo將返回false。

但是,您的日期時間字段可能不會將日期存儲在精度較高的日期(儘管datetime2(7)應該足夠精確)。因此,如果您將兩個DateTime存儲在數據庫中,並且它們的間隔非常短,那麼從數據庫獲取BACK的值可能會相同。