2

私のデータベースにはdate、ユーザーがテーブルにデータを追加した日付を格納する列の 1 つとして 1 つのテーブルがあります。

今月だけのデータを取得したいと思います。Google で検索しましたが、適切な回答が得られませんでした。

私のテーブル作成コード:

"create table incomexpense(
    _id integer primary key autoincrement,
    "+"price text not null,description text not null,
    "+"quantity text not null,
    "+"total text not null,
    "+"category text not null,
    "+"recurrence text not null,
    "+"date text not null,
    "+"groups text not null,
    "+" recurrenceid text not null);";

現在の日付から7日目の日付を取得する方法を教えてください。

4

2 に答える 2

7

現在の年/月を「自動的に」ロードする場合は、SQLiteのstrftime関数を'now'修飾子と'%Y-%m'フォーマットマスクとともに使用します。

select strftime('%Y-%m', 'now');

さて、あなたの質問に来てください:

今月だけのデータを取得したいと思います。

さて、ここで混乱が起こります。日付を日時型として保存することはできません。代わりに、SQLiteが日付関数を使用して解析できない形式の文字列として保存されます。したがって、 SQLiteが理解できる形式に変換する必要があります。

通常のsubstr機能を使用してそれを行うことができます

substr(exp_date, 7) || '-' || substr(exp_date, 4,2) || '-' || substr(exp_date, 1,2)

dd/mm/yyyyしたがって、これはフォーマットに隠れYYYY-mm-ddます。

したがって、完全なクエリは次のようになります。

SELECT *
FROM   incomexpense
WHERE  Strftime('%Y-%m', 'now') = Strftime('%Y-%m', Substr(exp_date, 7)
                                                    || '-'
                                                    || Substr(exp_date, 4, 2)
                                                    || '-'
                                                    || Substr(exp_date, 1, 2)) 

これがどのように機能するかをここで確認してください。

于 2012-07-24T20:21:01.580 に答える
0

Android には、"Date" のようなデータ型がありません。文字列として保存し、使用時に適切に解析することができます。したがって、このオプションを使用すると、 Date を取得して解析しない限り、当月のレコードを見つけることができません。

他のオプションは、数値として保存することです-Unix時間、1970-01-01 00:00:00 UTCからの秒数。

where 句でいくつかの計算を行うと、現在の月のレコードを見つけることができます。

于 2012-07-24T12:18:52.260 に答える