我正在尝试选择两个日期之间的特定日期。存储在数据库中的格式为M/d/yyyy
。我正在尝试做的是传递两个日期,我想在这两个日期之间选择一列的所有数据。我知道数据库中有数据,但它并没有为某些日期带来任何东西。对于某些日期,它会带来数据,但在某些日期它会带来数据。
示例:
当我选择7/10/2011作为第一个日期,并作为第二个日期7/16/2011时,它会带来数据。但是当我选择7/9/2011作为第一个日期和第二个日期7/16/2011时,它并没有带来任何东西。
这是我的问题:
Cursor cursor = db.query(CONTACT_DATA, new String[] { "duration" },
"date >= ? AND date <= ?",
new String[] { firstDate, secondDate }, null, null, null);
如果有人可以帮助解决这个问题。谢谢!
答案 0 :(得分:0)
SQLite没有本机日期类型;它将您的日期作为字符串进行比较。这就是为什么当日期在同一个月和一年中,并且当天的数字位数相同时,查询似乎有效,但这只是运气。
通常,SQLite用户使用ISO-8601格式(YYYY-MM-DD)格式化其日期字符串,该格式正确排序为字符串。
SQLite确实有date functions - 如果您的日期状况良好,您可以使用这些日期以及ltrim and rtrim将日期转换为查询中可用的格式。
答案 1 :(得分:0)
我要将日期存储为毫秒(纪元格式),因此更容易比较。在打印日期时,我会转换它。