您应该首先查看date & time functions 的 SQLite 文档。
例如,要解决您的问题“如果我想提前获取日期为 2 或 3 天的行”,您将使用儒略日计算,例如作为这个例子,你可以直接在sqlite3 shell 中执行:
create TABLE example (_id INTEGER PRIMARY KEY NOT NULL, date TEXT NOT NULL);
insert into example (date) values ('2011-01-02');
insert into example (date) values ('2011-04-02');
insert into example (date) values ('2012-02-26');
insert into example (date) values ('2012-02-27');
insert into example (date) values ('2012-02-28');
insert into example (date) values ('2012-02-29');
insert into example (date) values ('2012-03-01');
insert into example (date) values ('2012-03-02');
insert into example (date) values ('2012-03-03');
select date from example where julianday(date) - julianday('now') < 3 AND julianday(date) - julianday('now') > 0;
这将返回(假设“今天”是 2 月 28 日)未来一、二或三天的所有日子:
2012-02-29
2012-03-01
2012-03-02
编辑:要只返回行,无论年份如何,您都可以这样做 - 使用 VIEW(同样,示例直接在 SQLite 中):
create view v_example as select _id, date,
strftime("%Y", 'now')||'-'||strftime("%m-%d", date) as v_date from example;
VIEW 将返回您数据库中“重新定位”当前年份的日期和时间 - 当然,这可能会在闰年引入各种不稳定的行为。
在这种情况下,您可以像这样选择所有日期:
select date from v_example where
julianday(v_date) - julianday('now') < 3 AND
julianday(v_date) - julianday('now') > 0 ORDER BY v_date;
哪个会返回:
2012-02-29
2012-03-01
2001-03-01
2012-03-02
2010-03-02