Sqlite查询得到未指定的月份

时间:2014-06-26 06:37:11

标签: android sqlite

是否有任何sqlite查询来获取未指定的月份。

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

和下一个条目

2014年12月1日

我可以在那段时间内获得所有月份。 即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列下。

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

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
;

答案 1 :(得分:-1)

查找两个日期之间的所有日期:

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理解的。