我需要在 SQLite 中的 SELECT 子句中获取最近 10 分钟的数据,每分钟一条数据,例如这样:
06/12/2021 11:37:00 ...
06/12/2021 11:38:00 ...
06/12/2021 11:39:00 ...
06/12/2021 11:40:00 ...
06/12/2021 11:41:00 ...
你可以尝试一下:
SELECT * FROM your_table WHERE your_column >= datetime('now', '-10 minutes', 'localtime');
假设你有:
(在 SQLITE 数据库中)
SELECT * FROM your_table
WHERE id IN (
SELECT MIN(id)
FROM your_table
GROUP BY strftime('%Y-%m-%d %H:%M', dt_column)
)
AND dt_column >= datetime('now', '-10 minutes');
这使用了 Sqlite 的 strftime() 函数,该函数是为了模仿 C 的同名函数而设计的。更多信息这里。
请注意,如果原始表中从该分钟起没有任何行,您将不会在输出中看到任何行。高级
n 秒最多 1 行。这是我想出的似乎有效的方法:
SELECT * FROM your_table
WHERE id IN (
SELECT MIN(id)
FROM your_table GROUP BY strftime (
'%Y-%m-%d %H:%M:%S',
dt_column,
printf('-%d seconds', strftime("%s", dt_column) % n)
)
)
AND dt_column >= datetime('now', '-10 minutes');
请注意,这里我使用的是 %s,即自 Jan 1 1970 以来的秒数,而不是 %S,即自分钟开始以来的秒数。
记得设置n。