Sqlite 按时间戳值的范围分组

Sqlite 按时间戳值的范围分组,sqlite,timestamp,unix-timestamp,Sqlite,Timestamp,Unix Timestamp,我花了很多时间阅读,仍然找不到最好的解决办法。我正在设计一个Android卡路里计数器应用程序,我正在使用SQLite。 我有一个表food\u logs,其中有两个字段:log\u date(NUMBER)、food\u id(NUMBER)。我将日期保存为unix时间戳。我想找回一个人每天吃过的所有食物 例如,今天或2012年5月20日(昨天)吃的所有食物。我在用时间戳搜索GROPBY,但什么也找不到 或者我只需要将日期保存为字符串(我认为这不是最佳做法)在查询表时,您可以将unix时间戳转

我花了很多时间阅读,仍然找不到最好的解决办法。我正在设计一个Android卡路里计数器应用程序,我正在使用SQLite。 我有一个表
food\u logs
,其中有两个字段:
log\u date(NUMBER)、food\u id(NUMBER)
。我将日期保存为unix时间戳。我想找回一个人每天吃过的所有食物

例如,今天或2012年5月20日(昨天)吃的所有食物。我在用时间戳搜索GROPBY,但什么也找不到


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

在查询表时,您可以将unix时间戳转换为字符串值。看一看这张照片

例如,您可以在查询中使用以下代码:

SELECT food_id, COUNT(*) FROM food_logs GROUP BY date(log_date, 'unixepoch');

表中的各种时间戳值将具有不同的小时、分钟、秒值。SQL的GROUPBY用于收集具有相同值的多行,所以这里的语法不适用于您。如果您只需要汇总一天的数据,您可以这样做,假设您有一个包含food\u id和calorie\u count列的table food\u 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'
选择总和(卡路里计数)
从食品日志fl内部加入食品信息fi ON fi.food\u id=fl.food\u id
其中日志日期>='2012-21-05'和日志日期<'2012-21-06'

您可能需要对此进行一些调整,以适应SQLLite的特定语义

什么是“GROPBY时间戳”?谢谢你为我指出了正确的方向。当我在数据库中插入时间戳时,我使用System.currentTimeMillis()但是SQLite unixepoch需要以秒为单位的时间,因此我必须以1000为单位以秒为单位来节省时间,并按照您的建议进行转换。还有一件事需要注意:unix时间戳可能以UTC为单位,如果是这样,您需要对此进行更正,或者您可能包括来自从前一天晚上到第二天晚上。