Android 用于获取未指定月份的Sqlite查询

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

是否存在任何sqlite查询以获取未指定的月份

如果我有数据库条目 2014年1月1日

下一个条目呢

2014年12月1日

我能在这段时间里得到所有的月份吗。 i、 e.2014年2月至2014年11月

提前谢谢

这是我的函数,它返回我所有条目的月份和年份

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我想要月份