从Android中的数据库中检索日期数据

时间:2012-07-24 11:47:48

标签: android sqlite

在我的数据库中,我有1个表date作为列之一,它存储用户在我的表中添加一些数据的日期。

现在我想单独检索当月的数据。我在谷歌搜索但没有得到适当的答案。

我的表创建代码:

"create table incomexpense(
    _id integer primary key autoincrement,
    "+"price text not null,description text not null,
    "+"quantity text not null,
    "+"total text not null,
    "+"category text not null,
    "+"recurrence text not null,
    "+"date text not null,
    "+"groups text not null,
    "+" recurrenceid text not null);";

任何人都可以帮助如何从当前日期获取第7天的日期。

2 个答案:

答案 0 :(得分:7)

如果您想“自动”加载当前年/月,请使用SQLite的strftime函数和'now'修饰符& '%Y-%m'格式掩码。

select strftime('%Y-%m', 'now');

现在,回答你的问题:

  

现在我想单独检索当月的数据。

好吧,这里来了一团糟。您can't store the date as a datetime type,而是以SQLite无法使用日期函数解析的格式存储为字符串。因此,您必须将其转换为SQLite can understand格式。

您可以使用通常的substr函数

来实现
substr(exp_date, 7) || '-' || substr(exp_date, 4,2) || '-' || substr(exp_date, 1,2)

因此,这会将dd/mm/yyyy转换为YYYY-mm-dd格式。

所以完整的查询将是:

SELECT *
FROM   incomexpense
WHERE  Strftime('%Y-%m', 'now') = Strftime('%Y-%m', Substr(exp_date, 7)
                                                    || '-'
                                                    || Substr(exp_date, 4, 2)
                                                    || '-'
                                                    || Substr(exp_date, 1, 2)) 

了解其工作原理over here

答案 1 :(得分:0)

Android的数据类型没有“日期”。您可以将其存储为字符串,并在使用时对其进行适当的解析。 因此,使用此选项,除非您检索并解析日期,否则您将无法在当月找到记录。

其他选项是将其存储为数字 - Unix时间,自1970-01-01 00:00:00 UTC以来的秒数。

通过where子句中的一些计算,您可以找到当月的记录。