当调用 .NET 中 DateTime 的 CompareTo() 时,是否将 DateTime 对象上的刻度与另一个对象上的刻度进行比较?比较的精确度如何?我正在从 sql 数据库中获取 datetime2(7) 值,并希望确保比较是逐个滴答。
问问题
186 次
2 回答
3
是的,比较刻度。这是Equals
在 DateTime 结构中实现的方式
public bool Equals(DateTime value)
{
return (this.InternalTicks == value.InternalTicks);
}
InternalTicks 返回ulong
类型的字段。因此,日期时间的比较与长类型的比较具有相同的精度。单个滴答表示 100 纳秒。
顺便说一句,数据库可以以不同的精度存储时间 - 一些准确性可能会丢失。但是有一个技巧——你可以将Ticks
值保存到数据库中。在这种情况下,您可以稍后恢复完全相同的 .net DateTime 对象。
于 2012-10-22T23:31:48.923 回答
0
数据库的精度与 DateTime 对象的精度无关。DateTime 对象存储 100ns 的内部滴答计数。所以这是相当精确的。是的,如果值相差 1 个刻度,CompareTo 将返回 false。
但是,您的 datetime 字段可能不会以如此高的精度存储日期(尽管 datetime2(7) 应该足够精确)。因此,如果您在数据库中存储两个 DateTime,并且它们的间隔非常短,那么您从数据库中获取的 BACK 值可能是相同的。
于 2012-10-22T23:32:07.777 回答