我花了很多时间阅读,但仍然找不到最佳解决方案。我正在设计一个 Android 卡路里计数器应用程序,我正在使用 SQLite。我有一个表food_logs
,其中有 2 个字段:log_date(NUMBER) , food_id(NUMBER)
. 我将日期保存为 unix 时间戳。我想检索一个人过去几天吃过的所有食物。
例如今天或 2012-05-20(昨天)吃的所有食物。我正在搜索 GROPBY 时间戳,但我一无所获。
或者我只需要将日期保存为字符串(我认为这不是最佳做法)
我花了很多时间阅读,但仍然找不到最佳解决方案。我正在设计一个 Android 卡路里计数器应用程序,我正在使用 SQLite。我有一个表food_logs
,其中有 2 个字段:log_date(NUMBER) , food_id(NUMBER)
. 我将日期保存为 unix 时间戳。我想检索一个人过去几天吃过的所有食物。
例如今天或 2012-05-20(昨天)吃的所有食物。我正在搜索 GROPBY 时间戳,但我一无所获。
或者我只需要将日期保存为字符串(我认为这不是最佳做法)
您可以在查询表时将您的 unix 时间戳转换为字符串值。看看SQLite 日期功能。
例如,您可以在查询中使用以下代码:
SELECT food_id, COUNT(*) FROM food_logs GROUP BY date(log_date, 'unixepoch');
表中的各种时间戳值将具有不同的小时、分钟、秒值。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 的特定语义。