比较毫秒时java.util.Timestamp.after()错误了吗?

Bes*_*ces 10 java oracle time

我正在从Oracle数据库中提取日期.它们设置在java.util.Date字段上,它们实际上是java.sql.Timestamp实例(它是Java.util.Date的子类).如果我通过在第一个日期调用after()并将它与第二个日期进行比较来比较两个不同数据库记录中的两个时间戳,那么当日期的所有部分除了毫秒之外的所有部分都相同时,我得到错误的答案.

所有以下内容都应该导致"true",但第二组数字不会:

firstDate  = 1/1/2000 12:00:20:00
secondDate = 1/1/2000 12:00:10:00
result = firstDate.after(secondDate);
result is TRUE <-- EXPECTED RESULT

firstDate  = 1/1/2000 12:00:00:10
secondDate = 1/1/2000 12:00:00:00
result = firstDate.after(secondDate);
result is FALSE <-- NOT EXPECTED, result should be TRUE 
Run Code Online (Sandbox Code Playgroud)

我知道nanos与Timestamp类中的Date实例分开存储,我很好奇这是否是问题.

Kon*_*rus 4

您可以比较它们,但只能通过比较毫秒来比较。虽然它很丑陋,但它似乎在所有情况下都有效(无论是java.sql.Timestampjava.util.Date)。

if(date1.getTime() > date2.getTime()) {
  //...
}
Run Code Online (Sandbox Code Playgroud)