4

読むのに多くの時間を費やしましたが、まだ最善の解決策を見つけることができません。私は Android カロリー カウンター アプリケーションを設計しており、SQLite を使用しています。私は2つのフィールドを持つテーブルを持っていfood_logsます: log_date(NUMBER) , food_id(NUMBER). 日付を UNIX タイムスタンプとして保存します。人が何日も食べたすべての食べ物を取得したい。

たとえば、今日または 2012 年 5 月 20 日 (昨日) に食べたすべての食品。GROPBY タイムスタンプを検索していましたが、どこにも行きませんでした。

または、日付を文字列として保存する必要があります(これはベストプラクティスではないと思います)

4

2 に答える 2

5

テーブルのクエリ中に、UNIX タイムスタンプを文字列値に変換できます。SQLite の日付関数を見てください。

たとえば、クエリで次のコードを使用できます。

SELECT food_id, COUNT(*) FROM food_logs GROUP BY date(log_date, 'unixepoch');
于 2012-05-21T19:59:41.260 に答える
1

テーブル内のさまざまなタイムスタンプ値には、時間、分、秒の個別の値があります。SQL の GROUP BY は、同じ値を持つ複数の行を収集するために使用されるため、ここでは構文が機能しません。合計した 1 日分のデータのみが必要な場合は、列 food_id と calorie_count を持つテーブル food_info があると仮定して、次のようにすることができます。

SELECT SUM(calorie_count)
    FROM food_logs fl INNER JOIN food_info fi ON fi.food_id = fl.food_id
    WHERE log_date >= '2012-21-05' AND log_date < '2012-21-06'

SQLLite 固有のセマンティクスに合わせて、これを少し調整する必要がある場合があります。

于 2012-05-21T20:00:24.033 に答える