Android 用于获取未指定月份的Sqlite查询
是否存在任何sqlite查询以获取未指定的月份 如果我有数据库条目 2014年1月1日 下一个条目呢 2014年12月1日 我能在这段时间里得到所有的月份吗。 i、 e.2014年2月至2014年11月 提前谢谢 这是我的函数,它返回我所有条目的月份和年份Android 用于获取未指定月份的Sqlite查询,android,sqlite,Android,Sqlite,是否存在任何sqlite查询以获取未指定的月份 如果我有数据库条目 2014年1月1日 下一个条目呢 2014年12月1日 我能在这段时间里得到所有的月份吗。 i、 e.2014年2月至2014年11月 提前谢谢 这是我的函数,它返回我所有条目的月份和年份 public String[] getmonthsmood() { String result[]=null; try { int
public String[] getmonthsmood()
{
String result[]=null;
try
{
int i = 0;
appDatabase = SQLiteDatabase.openDatabase(strmyPath, null, SQLiteDatabase.OPEN_READWRITE);
String selectQuerry = "SELECT distinct strftime('%Y-%m',dateadded) FROM Mood_diary ORDER BY dateadded";
Cursor cursor = appDatabase.rawQuery(selectQuerry, null);
// int result=cursor.getCount();
result = new String[cursor.getCount()];
if (cursor.moveToFirst())
{
do
{
// result.add(cursor.getString(0));
result[i] = cursor.getString(0);
i++;
}
while (cursor.moveToNext());
}
return result;
}
catch (Exception e)
{
e.printStackTrace();
}
return result;
}
在我的sqlite数据库中,我在Comment和dateadded列下放置了一个字符串和日期项。要查找两个日期之间的所有日期,请执行以下操作:
SELECT distinct strftime('%Y-%m',dateadded) FROM Mood_diary WHERE dateadded between '2014-01-01' AND '2014-12-01' ORDER BY dateadded;
确保存储的日期为YYYY-MM-DD格式。这就是sqlite所理解的 您可以尝试以下方法:
WITH RECURSIVE months(m) AS (
VALUES(1)
UNION
SELECT m+1 FROM months LIMIT 12
)
SELECT y || '-' || m AS yearmonth
FROM (SELECT CASE WHEN m < 10 THEN '0' || m ELSE m END AS m FROM months),
(SELECT DISTINCT STRFTIME('%Y', dateadded) AS y FROM Mood_diary)
WHERE yearmonth > (SELECT MIN(STRFTIME('%Y-%m', dateadded)) FROM Mood_diary) AND
yearmonth < (SELECT MAX(STRFTIME('%Y-%m', dateadded)) FROM Mood_diary) AND
yearmonth NOT IN (SELECT (STRFTIME('%Y-%m', dateadded)) FROM Mood_diary)
ORDER BY yearmonth
;
这些值的格式是什么?您好-您尝试过哪些查询,为什么结果不令人满意?你在谷歌上搜索了什么,这样我们就不必重复你在解决这个问题上已经付出的努力了?m=1有什么问题;这返回数据库中确实存在的值。好的,那么这个问题要求什么呢?两个日期之间的月数。我想我误解了这个问题。更正@CL。我想要数据库中不存在的值。我想你应该把这个添加到问题中。另外,您想打印月份还是月份数?@ShivamVerma我想要月份