4

我花了很多时间阅读,但仍然找不到最佳解决方案。我正在设计一个 Android 卡路里计数器应用程序,我正在使用 SQLite。我有一个表food_logs,其中有 2 个字段:log_date(NUMBER) , food_id(NUMBER). 我将日期保存为 unix 时间戳。我想检索一个人过去几天吃过的所有食物。

例如今天或 2012-05-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 用于收集具有相同值的多行,因此这里的语法对您不起作用。如果你只需要总结一天的数据,你可以做这样的事情,假设你有一个表 food_info 列 food_id 和 calorie_count:

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 回答