6

Android アプリのデータ ストレージとして SQLite を使用しています。タイプdatetimeの列を持つ1つのテーブルを作成しました。レコードの挿入またはステートメントの選択を行うとき、日付には dd.MM.yyyy (10.08.2012) の形式を使用します。

現在、最新/MAX日付の行を取得する際に問題があります。MAX(date_column) ステートメントを使用してみましたが、間違った日付が返されます。テーブルに次の日付があり、04.08.2012 ではなく 31.07.2012 が返されます。私が間違っていることを知っている人はいますか?

04.08.2012
03.08.2012
02.08.2012
01.08.2012
31.07.2012
30.07.2012

コードの一部を次に示します。

String selection = "measurementDate = (SELECT MAX(measurementDate) FROM Measurements)";
Cursor cursor = database.query("Measurements", allColumns, selection, null, null, null, null);
cursor.moveToFirst();
...
4

2 に答える 2

3

31のせいでしょうか?
これが役立つかどうかを確認してください。

SELECT measurementDate FROM Measurements ORDER BY measurementDate desc LIMIT 1
于 2012-08-09T23:23:40.837 に答える
3

おそらく、日付として扱うのではなく、格納された文字列に対して比較が行われていることが原因です。

文字列を別の形式で保存することもできますが、YYYYMMDD は正しく比較する必要があります。テーブルを変更できる場合は、日付をミリ秒単位で保存し、必要に応じて文字列にフォーマットし直します。

これは役立つかもしれません

于 2012-08-09T23:23:59.590 に答える