Android:带日期查询

发布于 2024-12-02 06:19:18 字数 193 浏览 1 评论 0原文

我必须执行查询,但我对日期有问题,因为结构是 27/08/2011 这是代码:

dt="27/08/2011";
db.query(TABLE,null,mydata + "=" + dt,null,null,null,null);

问题是光标始终为 0。我认为这是数据结构,因为如果我查询其他它工作正常

I must to do a query but I have a problem with date becase the structure is 27/08/2011 this is the code :

dt="27/08/2011";
db.query(TABLE,null,mydata + "=" + dt,null,null,null,null);

the problem is that the cursor is always 0. I think that is the data structure because if I query other it work fine

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦情居士 2024-12-09 06:19:18

您的日期未加引号,因此 SQLite 会将 27/08/2011 解释为数学表达式,并将其替换为 0(整数值 27 除以 8 除以 2011 )。你可以自己引用它:

db.query(TABLE, null, mydata + "=" + "'" + dt + "'", null, null, null, null);

或者更好,使用占位符

db.query(TABLE, null, mydata + "= ?", new String[] { dt }, null, null, null);

切换到 ISO 8601 日期格式也是一个避免使用的好主意日期中可能存在基于区域设置的歧义:

String dt = "2011/08/27";
Cursor c  = db.query(TABLE, null, mydata + "= ?", new String[] { dt }, null, null, null);

Your date isn't quoted so SQLite will interpret 27/08/2011 as a mathematical expression and replace it with 0 (the integer value of 27 divided by 8 divided by 2011). You could quote it yourself:

db.query(TABLE, null, mydata + "=" + "'" + dt + "'", null, null, null, null);

Or better, use a placeholder:

db.query(TABLE, null, mydata + "= ?", new String[] { dt }, null, null, null);

Switching to an ISO 8601 date format would also be a good idea to avoid possible locale-based ambiguity in the date:

String dt = "2011/08/27";
Cursor c  = db.query(TABLE, null, mydata + "= ?", new String[] { dt }, null, null, null);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文