假设您有一个包含以下列(全部整数)的表
taskId | day | month | year
------------------------
1 | 4 | 4 | 2016
1 | 3 | 5 | 2016
1 | 12 | 5 | 2016
1 | 30 | 5 | 2016
假设现在的日期是2016年4月4日 如何在Sqlite查询中获取从现在到接下来的30天之间的记录。 意味着,未来30天的任务。
所以结果应该是,
1 | 4 | 4 | 2016 << today is 4/4/2016
1 | 3 | 5 | 2016
感谢
答案 0 :(得分:2)
要将这些列转换为SQLite的默认日期格式,请使用printf()
:
printf("%04d-%02d-%02d", year, month, day)
然后您可以使用内置日期功能:
SELECT *
FROM MyTable
WHERE printf(...) BETWEEN date('now') AND date('now', '+30 days');
答案 1 :(得分:1)
<强>第一强>
我必须说,与date
合作可能会更好,或者也可以使用date.getTime
返回long
。
说
从java方面你必须做这样的事情:
Caendar c = Calendar.getIstance();
int currentDay = c.get(Calendar.DAY_OF_MONTH);
int currentMonth = c.get(Calendar.MONTH) + 1; //it's 0 based
int currentYear = c.get(Calendar.YEAR);
c.add(Calendar.DAY_OF_MONTH, 30);
int nextMonthDay = c.get(Calendar.DAY_OF_MONTH);
int nextMonthMonth = c.get(Calendar.MONTH) + 1; //it's 0 based
int nextMonthYear = c.get(Calendar.YEAR);
String myQuery = String.Format("select * from myTable where (day >= {0} and month >= {1} and year >= {2}) and ( day < {3} and month <= {4} and year <= {5})", currentDay, currentMonth, currentYear, nextMonthDay, nextMonthMonth, nextMonthYear);
这将占用日期为&gt; =当前且日期为&lt; =下个月
的所有行希望这有帮助