2017-09-09 57 views
1

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

换句话说,我需要有一个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(),所以这就是为什么最后一个不起作用。

+0

的strftime需要格式,因为它是第一个参数和TIMESTRING作为第二。 – algrid

+0

谢谢!这里是正在工作的SQLite查询:'SELECT dt,y FROM mytable WHERE dt> datetime('now',' - 1 day')AND strftime('%M',dt)%5 = 0 ORDER BY dt' – somanyquestions

回答

1

如algrid提及,在采用strftime() function以不同的顺序其参数:

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

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