【问题标题】:How to select entry every 5 minutes with SQLite如何使用 SQLite 每 5 分钟选择一次条目
【发布时间】:2017-09-09 07:47:47
【问题描述】:

我需要从带有时间戳的 SQLite 表中返回数据,并每 5 分钟选择一个时间戳。该表包含 SQLite 时间戳字符串,每分钟一个,四舍五入到分钟。

换句话说,我需要有一个 WHERE 条件,例如:“分钟 % 5 = 0”。但我似乎做不到,我不明白我做错了什么。

我还将时间戳过滤为过去 24 小时的时间戳:dt > datetime('now','-1 day')。那个有效。

到目前为止我已经尝试过:

SELECT dt, y FROM mytable WHERE dt > datetime('now','-1 day') AND strftime(dt, '%M') % 5 = 0 ORDER BY dt

和:

SELECT dt, y FROM mytable WHERE dt > datetime('now','-1 day') AND cast(strftime(dt, '%M') as int) % 5 = 0 ORDER BY dt

和:

SELECT dt, y FROM mytable WHERE dt > datetime('now','-1 day') AND mod(minute(dt),5) = 0 ORDER BY dt

...以及这些的各种组合。

我认为 SQLite 不支持 minute(),所以这就是最后一个不起作用的原因。

【问题讨论】:

  • strftime 将 format 作为第一个参数,将 timestring 作为第二个参数。
  • 谢谢!这是有效的 SQLite 查询:SELECT dt, y FROM mytable WHERE dt > datetime('now','-1 day') AND strftime('%M', dt) % 5 = 0 ORDER BY dt

标签: sqlite


【解决方案1】:

正如 algrid 所述,strftime() function 以不同的顺序获取其参数:

> select strftime('12:34:56', '%M');

> select strftime('%M', '12:34:56');
34

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 2013-10-19
    • 2018-01-14
    • 2021-06-29
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多