5

私はアプリケーションを開発しました..そのために、データベースがあり、多くのテーブルがあります。テーブルの 1 つに日付列があります。私の質問は、日付を並べ替えて、下の表の列から2012 年10 月 24 日のように最も古い日付を選択する必要があることです。

Column_Date
------------

2012
年 11 月 7 日 2012 年 11 月21 日 2012 年 11 月
25
日 2012 年 10 月 25 日 2012 年
10月 24 日

どうすればいいですか....日付列を文字列に保存しました...日付列のデータ型を変更する必要がある場合は、どのデータ型を使用すればよいか教えてください。そして、どのように列をソートする必要がありますか.そのデータ型に応じて..

4

3 に答える 3

11

sqlite には実際には日付型がありません。詳細については、 http: //www.sqlite.org/lang_datefunc.html を参照してください。

時間文字列は、次のいずれかの形式にすることができます。

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

それらをYYYY-MM-DDで保存する必要があり、昇順制限1で並べ替えて、最も古い日付を取得できます。だから代わりに

Column_Date
------------
Nov-07-2012
Nov-21-2012
Nov-25-2012
Oct-25-2012
Oct-24-2102

代わりに、このように保存する必要があります

Column_Date
------------
2012-11-07
2012-11-21
2012-11-25
2012-10-25
2012-10-24

最後に、行がある場合はそれを読み取ります

Cursor oldestDateCursor = db.query("DateTableName", null, null, null, null, null, "date_column ASC LIMIT 1");
if (oldestDateCursor.moveToFirst())
{
    String date = oldestDateCursor.getColumnName(oldestDateCursor.getColumnIndex("date_column"));
}
oldestDateCursor.close();
于 2012-11-09T00:57:59.307 に答える
4

保存方法を変更できます。1 つの列の代わりに、次の 3 つを使用します:
月 、 日 、 年 ;


これにより、柔軟性が向上し、より簡単に並べ替えることができます。文字列ではなく数字の月(1-12)であるため、より簡単にソートされます。

SELECT month,day,year
FROM tables
ORDER BY month,day,year DESC;
于 2012-11-09T00:56:00.383 に答える
1

まず、タイプ「日付」を sqlite に格納することはできません。これを達成するための同様に賞賛に値する方法がたくさんあると確信していますが、ここで私が個人的にあなたが求めていることをどのように行うかを示します. すべての日付をこの文字列形式に変換しnew SimpleDateFormat("yyyyMMdd");ます。それをデータベースに入れます。それは便利であり、自明の理由で願っています。そして、日付を返したいときは、クエリで次のような順序を使用するだけです"date DESC"。次に、必要な形式に再変換します。

于 2012-11-09T00:58:55.593 に答える