我正试图用android从SQLite数据库中获取最后12个小时的条目。
我想知道这是否可能?
我的日期格式是"yyyy-MM-dd HH:mm:ss.SSS"
,使用简单的日期格式。
我的表中有一个CREATED_AT列,其类型为TEXT。
我已经走了这么远:
SELECT * FROM " + ENTRIES_TABLE + " WHERE " + CREATED_AT + ..."
另外,CREATED_AT列是TEXT而不是日期时间类型是否重要?
感谢
SQLite使用动态类型;列是否声明为TEXT、DATETIME或FLUFFY BUNNIES并不重要。
SQLite的日期格式是为了使字符串比较能够正确工作而设计的。要从时间戳中减去12小时,请使用内置的日期函数之一:
SELECT *
FROM Entries
WHERE CreatedAt >= datetime('now', '-12 hours')
(默认情况下,SQLite日期函数使用UTC;请检查表的值是否使用某些本地时区。(
作为一个文本字段,您不能做很多事情。事实上,您唯一能一直工作而不会带来很大痛苦的选择是解析数据并手动执行。痛苦的方法是直接查看字符串比较,但如果你在1月1日中午之前处理,这会变得复杂。
在sqlite中处理日期的一种更好的方法,实际上也是最好的方法,就是使用Unix时间戳。然后,只要选择时间标签大于当前时间减去12小时的任何东西,就可以了。