我试图从带有android的SQLite数据库中获取最近12个小时的条目。
我想知道这是否可能?
我的日期格式为"yyyy-MM-dd HH:mm:ss.SSS"
,使用简单的日期格式。
我的表格中有一个CREATED_AT列,类型为TEXT。
我到目前为止:
SELECT * FROM " + ENTRIES_TABLE + " WHERE " + CREATED_AT + ..."
此外,CREATED_AT列是TEXT而不是日期时间类型是否重要?
由于
答案 0 :(得分:4)
SQLite使用dynamic typing;如果列被声明为TEXT或DATETIME或FLUFFY BUNNIES,则无关紧要。
SQLite的日期格式旨在使字符串比较正常工作。 要从时间戳中减去12小时,请使用built-in date functions之一:
SELECT *
FROM Entries
WHERE CreatedAt >= datetime('now', '-12 hours')
(SQLite日期函数默认使用UTC;检查表的值是否使用某些本地时区。)
答案 1 :(得分:0)
作为一个文本领域,你不能做很多事情。实际上,您唯一可以毫不费力地工作的选项是解析数据并手动完成。这条痛苦的路线会直接看到字符串比较,但是如果你在中午之前处理1月1日这会很复杂。
更好的方法,也就是在sqlite中处理日期的最佳方法是使用Unix时间戳。那么选择时间标签大于当前时间减去12小时的任何东西都是一件简单的事情,而且你已经设定了。