SQL语句不会在两个日期之间返回值

时间:2011-07-18 02:30:50

标签: android sqlite android-date

我正在尝试选择两个日期之间的特定日期。存储在数据库中的格式为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);

如果有人可以帮助解决这个问题。谢谢!

2 个答案:

答案 0 :(得分:0)

SQLite没有本机日期类型;它将您的日期作为字符串进行比较。这就是为什么当日期在同一个月和一年中,并且当天的数字位数相同时,查询似乎有效,但这只是运气。

通常,SQLite用户使用ISO-8601格式(YYYY-MM-DD)格式化其日期字符串,该格式正确排序为字符串。

SQLite确实有date functions - 如果您的日期状况良好,您可以使用这些日期以及ltrim and rtrim将日期转换为查询中可用的格式。

答案 1 :(得分:0)

我要将日期存储为毫秒(纪元格式),因此更容易比较。在打印日期时,我会转换它。