0

我正在尝试在两个日期之间选择一个特定日期。它存储在数据库中的格式是M/d/yyyy. 我想要做的是传递两个日期,我想选择这两个日期之间的列的所有数据。我知道数据库中有数据,但它不会在某些日期带来任何东西。对于某些日期,它会带来数据,但对于某些日期,它会带来数据。

例子:

当我选择 2011 年 7 月 10 日作为第一个日期,并选择 2011 年 7 月 16 日作为第二个日期时,它会带来数据。但是当我选择 2011 年 7 月 9 日作为第一次约会和 2011 年 7 月 16 日作为第二次约会时,它不会带来任何东西。

这是我的查询:

Cursor cursor = db.query(CONTACT_DATA, new String[] { "duration" },
                "date >= ? AND date <= ?",
                new String[] { firstDate, secondDate }, null, null, null);

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

4

2 回答 2

0

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

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

SQLite 确实有日期函数——如果你的日期格式都很好,你可以使用这些函数,以及ltrim 和 rtrim将你的日期转换为可用于查询的格式。

于 2011-07-18T03:27:48.807 回答
0

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

于 2011-08-02T12:54:00.230 回答