【问题标题】:Count all values of the last 60 minutes计算过去 60 分钟的所有值
【发布时间】:2018-05-03 01:41:20
【问题描述】:

我目前正在处理一个项目,其中一个 Android 应用程序正在 SQLite 数据库中保存一些带有时间戳的值。时间戳以“yyyy-MM-dd HH:mm:ss”格式存储为“DATE NOT NULL”类型。 (例如:ID:1 | 时间戳:2017-11-19 21:05:04 | 值:1234)。

现在,对于某些计算,我必须选择自当前时间以来的最后 60 分钟内创建/存储的条目数。

所以我需要类似的东西:

SELECT Count(*) FROM TableName WHERE Timestamp > current_timestamp - 60 Minutes

你能帮帮我吗?一个问题是,我无法更改时间戳的保存方式。

我搜索了许多似乎相似的主题,但无法正常工作。

感谢您的阅读和帮助。 冷1ce

【问题讨论】:

    标签: android sqlite date timestamp android-sqlite


    【解决方案1】:

    存储的时间戳对于 sqlite 处理来说似乎是合法的。

    为了安全起见,您可以在日期计算中使用 datetime() 时尝试对其应用。

    关于您的问题,您必须大致这样做:

    WHERE datetime(timestamp) > datetime(current_timestamp, '-60 minutes') 
    

    【讨论】:

    • 这似乎在某种程度上起作用。我将测试它的稳健性并提供反馈。谢谢你gnudiff!
    • 这很好用。唯一的问题是,由于时移,我当前的时间戳错了 1 小时。但我通过减去另一个 60 分钟来修复它。感谢您的帮助!
    • @cold1ce 没问题。关于时间,sqlite 始终存储并期望 GMT 时间。如果您的表值(很可能)在您当地的 TZ 中,您也可以尝试 datetime(timestamp, '-60 minutes', 'localtime')
    猜你喜欢
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 2021-09-25
    相关资源
    最近更新 更多