【发布时间】: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