是否有任何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列下。
答案 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理解的。