GROUP BY时间戳值范围

时间:2012-05-21 19:42:40

标签: sqlite timestamp unix-timestamp

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

例如今天或2012-05-20(昨天)吃的所有食物。我正在搜索GROPBY时间戳,但我无处可去。

或者我只需要将日期保存为字符串(我认为这不是最佳做法)

2 个答案:

答案 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的特定语义。