0

我正在从我的数据库中检索一些日期记录,结果如下:

Date
09/18/2012 1:34:34 AM
09/8/2012 8:15:34 AM
09/8/2012 12:02:11 AM
08/30/2012 8:47:02 PM
08/29/2012 11:44:00 PM

从上面的列表中,有 2 个日期为09/8/2012,我想选择 09/8/2012 8:15:34 AM(后一个),因此我的结果将如下所示:

Date
09/18/2012 1:34:34 AM
09/8/2012 8:15:34 AM
08/30/2012 8:47:02 PM
08/29/2012 11:44:00 PM

我该怎么做呢?提前致谢 :)

4

4 回答 4

3

使用min()方法来自Collections

Collections.min(yourCollectionOfDate);

java.sql.Date并且java.util.Date已经实现了比较器,因此您可以通过此方法获得较晚的日期

如果你想要自定义行为,那么你可以传递一个Comparatorinmin()

你也可以在数据库端处理这个

于 2012-09-19T08:37:16.800 回答
1

为什么不直接打开您的查询呢?

SELECT MAX(`DATE`) DateList
FROM tableName
GROUP BY DATE(`DATE`)
于 2012-09-19T08:39:24.697 回答
0

您可以使用 SortedSet 将所有日期从低到高排列。
您可以使用 TreeSet 的 iterator() 或 descendingIterator() 方法。
这是一个例子

    TreeSet<Date> set = new TreeSet<Date>();
    DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm");
    set.add(df.parse("01.01.2000 12:00"));
    set.add(df.parse("01.01.2000 09:00"));
    set.add(df.parse("01.01.2000 18:00"));

    System.out.println("First date: " + set.first());
    System.out.println("Last date: " + set.last());

    System.out.println("From low to high:");
    for (Date date : set)
        System.out.println(date);

    System.out.println("From high to low:");
    Iterator<Date> backIterator = set.descendingIterator();
    while (backIterator.hasNext())
        System.out.println(backIterator.next());
于 2012-09-19T08:54:55.090 回答
0
select max(date_column)
from table
group by trunc(date_column)
order by 1
于 2012-09-19T08:42:34.397 回答