【问题标题】:No results from a query with Date type in SQLite - Java/AndroidSQLite 中日期类型的查询没有结果 - Java/Android
【发布时间】:2012-09-09 21:51:15
【问题描述】:

我在 SQLite 数据库中执行以下查询:

" ...WHERE mydate >= '" + inicialdate + "' AND mydate <= '" + finaldate + "'";

mydate 是数据库中的字段,键入 DATE。 inicialdatefinaldate 是字符串。

这里的想法是在用户给定的两个不同日期之间执行查询。 我使用 DataPicker 来允许用户输入数据。
所以,我从 DatePicker 获取这些日期,并将它们放入 inicialdatefinaldate 字符串中。

我输入字符串的日期格式是“YYYY-MM-DD”。

当我在 finaldate 字符串中输入一些值时,查询返回了一些内容,但是当我将日期放入两个字符串中,或​​者只是在第一个字符串中时,我从查询中没有收到任何信息。

【问题讨论】:

  • 虽然 SQLite 中的 DATE type 实际上是一个数值,但 SQLite 使用类型亲和性,所以没关系。您所描述的应该可以工作,您能否提供一个查询失败的可运行示例?
  • 假设:我的数据库中有数据 2012-09-09。所以我想通过查询找到它。所以我尝试输入以下值:initialdate = 2012-09-08 和 finaldate = 2012-09-10。它只是行不通。但是当我将初始日期留空并输入 finaldate = 2012-09-10 时。我出于某种原因工作。
  • 我删除了我的“答案”,因为这只是一个对 cme​​ts 来说过于详细的建议,但我的提议仍然有效,如果您需要更多帮助并可以提供具体信息,请告诉我。
  • 非常感谢您的帮助,山姆。我终于找出了问题所在。我编辑了问题,并且有解决问题的方法。再次感谢!

标签: android sqlite date


【解决方案1】:

这行得通:

> sqlite3
SQLite version 3.7.13 2012-06-11 02:05:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table test(mydate date);
sqlite> insert into test values('2012-09-09');
sqlite> select * from test where mydate >= '2012-09-08' and mydate <= '2012-09-10';
2012-09-09

在您的数据库中是否可以使用相同的查询? 我猜表中的值可能使用不同的格式。

【讨论】:

  • 非常感谢您的帮助,CL。我终于找出了问题所在。您的查询在我的代码中运行良好。我编辑了问题,并且有解决问题的方法。再次感谢!
【解决方案2】:

" ...WHERE mydate &gt;= '" + inicialdate + "' AND mydate &lt;= '" + finaldate + "'";

这条查询是对的。问题出在我的代码中,使用 de datapicker。

要在 SQLITE 中执行查询,我需要使用格式 YYYY-MM-DD。 我直接从数据选择器获取数据以执行查询,因此有时它会检索格式为 YYYY-M-D 的数据。在数据选择器中,当月份或日期小于 10 时,它只需输入一个数字来表示月份或日期。

解决方法就是用 if 语句判断数字是否小于 10,然后在月或日的数字前加上“0”。

嗯,这完全解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    相关资源
    最近更新 更多