在我的数据库中,我有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天的日期。
答案 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子句中的一些计算,您可以找到当月的记录。