Android: SQLite 获取最近 7 天插入的所有记录
Android: SQLite Getting all records that inserted in last 7 days
Cursor cursor = db.rawQuery("SELECT * FROM expenses WHERE expense_date > (SELECT DATE('now', '-7 day'));", null);
我有上面的查询来获取过去 7 天内插入的所有记录。但是作为这个查询的结果,我得到了所有记录。这些记录的日期列是通过 Android 的 DatePicker
插入的,它们采用 30-Jul-2015 格式。我想这就是为什么这个查询不能正常工作的原因。有没有办法使它们保持一致以使此查询正常工作,或者我错过了其他东西?任何帮助将不胜感激。
我从未尝试过使用 SQLite 内置的日期函数。快速查看 SQLite 日期函数文档 here,似乎要使用它们,日期需要采用 YYYY-MM-DD 格式,这就是查询失败的原因。
您可以在保存到数据库之前做一些字符串 manipulation/formatting 并使用该格式。
就个人而言,我通常以这种方式格式化但没有破折号分隔符,然后可以使用简单的 less than/greater than 比较,将日期视为常规数字。当然,一些来回转换对于显示是必要的,但在引擎盖下它工作得很好。
int now = 20150730;
String query = "SELECT * FROM expenses WHERE expense_date > '" + now-7 + "'";
Cursor cursor = db.rawQuery("SELECT * FROM expenses WHERE expense_date > (SELECT DATE('now', '-7 day'));", null);
我有上面的查询来获取过去 7 天内插入的所有记录。但是作为这个查询的结果,我得到了所有记录。这些记录的日期列是通过 Android 的 DatePicker
插入的,它们采用 30-Jul-2015 格式。我想这就是为什么这个查询不能正常工作的原因。有没有办法使它们保持一致以使此查询正常工作,或者我错过了其他东西?任何帮助将不胜感激。
我从未尝试过使用 SQLite 内置的日期函数。快速查看 SQLite 日期函数文档 here,似乎要使用它们,日期需要采用 YYYY-MM-DD 格式,这就是查询失败的原因。
您可以在保存到数据库之前做一些字符串 manipulation/formatting 并使用该格式。
就个人而言,我通常以这种方式格式化但没有破折号分隔符,然后可以使用简单的 less than/greater than 比较,将日期视为常规数字。当然,一些来回转换对于显示是必要的,但在引擎盖下它工作得很好。
int now = 20150730;
String query = "SELECT * FROM expenses WHERE expense_date > '" + now-7 + "'";