2011-07-18 44 views
0

我试图选择两个日期之间的特定日期。它存储在数据库中的形式是M/d/yyyy。我想要做的是传递两个日期,我想选择这两个日期之间的列的所有数据。我知道数据库中有数据,但它不会为某些日期带来任何内容。对于某些日期,它会带来数据,但在某些日期它会带来数据。SQL语句不会返回两个日期之间的值

实施例:

当我选择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); 

如果任何人都可以用这个问题有所帮助。谢谢!

+0

看看是否有帮助:http://stackoverflow.com/questions/3838527/android-java-date-difference-in-days – nickfox

+0

哇,我尝试发布一个答案,它作为评论发布。我做了3次。 – nickfox

回答

0

我将存储日期为毫秒(时代格式),所以它更容易比较。当打印日期时,我会将其转换。

0

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

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

SQLite的确实有date functions - 如果您的日期均形成良好您可以使用这些,与ltrim and rtrim沿着你的日期转换为在查询中使用的格式。

+0

因此,我应该用来在两个日期之间进行查询的正确形式是:YYYY-MM-DD?谢谢。 – rogcg

+0

是的,只要这也是您要比较的列中数据的格式。 –

相关问题