我花了很多时间阅读,仍然无法找到最佳解决方案。我正在设计Android卡路里计数器应用程序,我正在使用SQLite。
我有一个表food_logs
,其中有两个字段:log_date(NUMBER) , food_id(NUMBER)
。我将日期保存为unix时间戳。我想找回一个人几天吃的所有食物。
例如今天或2012-05-20(昨天)吃的所有食物。我正在搜索GROPBY时间戳,但我无处可去。
或者我只需要将日期保存为字符串(我认为这不是最佳做法)
答案 0 :(得分:5)
您可以在查询表时将unix时间戳转换为字符串值。只需看一下SQLite date funcitons。
例如,您可以在查询中使用以下代码:
SELECT food_id, COUNT(*) FROM food_logs GROUP BY date(log_date, 'unixepoch');
答案 1 :(得分:1)
表格中的各种时间戳值将包含小时,分钟,秒的不同值。 SQL的GROUP BY用于收集具有相同值的多行,因此这里的语法不适用于您。如果您只需要总计一天的数据,那么您可以执行类似的操作,假设您有一个包含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的特定语义。