.NET中DateTime的CompareTo()有多精确

时间:2012-10-22 23:27:06

标签: .net datetime

当调用.NET中DateTime的CompareTo()时,是否将DateTime对象上的刻度与另一个上的刻度进行比较?比较精确程度如何?我从sql数据库中获取datetime2(7)值,并希望确保比较是明智的。

2 个答案:

答案 0 :(得分:3)

是的,比较滴答声。这就是{Date}结构中Equals实现的方式

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

InternalTicks返回ulong类型的字段。因此,DateTimes的比较与long类型的比较具有相同的精度。单刻度表示100纳秒。

Btw数据库可以以不同的精度存储时间 - 某些准确度可能会丢失。但有一个技巧 - 您可以将Ticks值保存到数据库。在这种情况下,您可以稍后恢复完全相同的.net DateTime对象。

答案 1 :(得分:0)

数据库的精度与DateTime对象的精度无关。 DateTime对象存储内部滴答计数为100ns。所以这非常精确。是的,如果值相差1滴,CompareTo将返回false。

但是,您的日期时间字段可能不会以高精度存储日期(尽管datetime2(7)应该足够精确)。因此,如果您在数据库中存储两个DateTime,并且它们的间隔非常短,那么从数据库中获取的值可能是相同的。