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

上記のリストから、2012年9月8日の2つの日付があり、2012年9月8日午前8時15分34秒(後者)を選択したいので、結果は次のようになります。

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ているので、この方法で遅い日付を取得できます

カスタム動作が必要な場合は、Comparatorinのインスタンスを渡すことができますmin()

また、これはデータベース側で処理できます

于 2012-09-19T08:37:16.800 に答える
1

クエリを直接操作してみませんか?

SELECT MAX(`DATE`) DateList
FROM tableName
GROUP BY DATE(`DATE`)
于 2012-09-19T08:39:24.697 に答える
0
select max(date_column)
from table
group by trunc(date_column)
order by 1
于 2012-09-19T08:42:34.397 に答える
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 に答える